使用java、javac命令行编译工程以及遇到的问题

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51672813 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货!

一、java和javac命令行

1、javac命令行

javac.exe用于编译java源文件,生成.class文件

语法:javac [option] source

常用的[option]选项:
A、-classpath <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是搜索文件)),使用后会覆盖CLASSPATH的设定
B、-d <路径> :指定源文件编译后生成.class文件的存放位置

2、java命令行

java.exe用于运行javac编译后生成的.class文件

语法:java [option] classname [arguments]

常用的[option]选项:
A、-classpath <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后会覆盖CLASSPATH的设定
B、[arguments]:传递给main函数的参数

二、例子

1、单独一个java程序

public class Demo{
    public static void main(String args[]){
               System.out.println("This is a test");
 }
}

命令如下:

javac  Demo.java  //在当前目录下生成Demo.class文件
java Demo  //执行Demo.class

也可以通过-d选项指定生成.class文件的位置,如:

javac -d  ..  Demo.java  //在当前目录的上一级目录中生成Demo.class文件,那么执行的时候,就要指定class的路径
java  -cp  ..  Demo //表示让java在上一级目录搜索类文件

2、一个带包的java程序

package com.demo;
public class Demo{
    public static void main(String args[]){
               System.out.println("This is a test");
    }
 }

命令如下:

javac  Demo.java //在当前目录下生成Demo.class文件
java Demo  //执行Demo.class

也可以通过-d选项指定生成.class文件的位置,如:

javac -d .  Demo.java //按照com.demo的包路径保存.class文件

则会在当前目录下生成一个com/demo/Demo.class文件,如下图:

这里写图片描述

3、同一个包下,一个类调用另一个类

Tom.java

package com.demo;
public class Tom{
    public String getMyname(){
          return "This is Tom!";
    }
}

Friend.java

package com.demo;
import com.demo.Tom;
public class Friend{
    public static void main(String args[]){
        Tom tom = new Tom();
        System.out.println("hello "+tom.getMyname());
     }
}

由于Friend类调用了Tom类,
1、编译Tom.java

javac -d  .   Tom.java

然后会按照包结构生成com/demo/Tom.class文件。

2、编译Friend.java文件

javac  -cp .  -d .  Friend.java
  1. javac会在 -cp 指示的 “.”(当前)目录寻找import com.demo.Tom所表示的路径com/demo/Tom ,
  2. 然后按照包结构生成com/demo/Friend.class,见下图:

这里写图片描述

3、运行:java com.demo.Friend

4、一个包下的类条用另一个包下的类

Tom.java

package com.demo1;
public class Tom{
     public String getMyname(){
     return "This is Tom!";
    }
 }

Friend.java

package com.demo2;  
import com.demo1.Tom;  
public class Friend{  
    public static void main(String args[]){  
        Tom tom = new Tom();  
        System.out.println("hello "+tom.getMyname());  
    }  
 } 

1、编译Tom.java

javac -d .  Tom.java

生成com/demo1/Tom.class;

2、编译Friend.java

javac   -cp .  -d  .   Friend.java

生成com/demo2/Friend.class;

这里写图片描述

3、运行:java com.demo2.Friend

三、常见错误

1.命令行下执行java程序,找不到或无法加载主类

  1. ShowMethods.java,编译后得到的文件为:ShowMethods.java.class
  2. 在命令行执行:java ShowMethods.java (无需加后缀“.class”)

这里写图片描述

错误原因:

1、ShowMethods.java是有包的(如下),在使用java命令运行生成的class时,必须指定全限定名称java com.example.ShowMethods

package com.example;

2、包名会被转化为路径,所以必须在适当路径,执行java命令(如上图蓝色框)

3、如果xxx.java文件没有包名,在使用java命令运行生成的class时,只需在.class所在目录指定xxx(名称)即可。

转载:
ubuntu下使用java、javac命令行编译工程

命令行使用javac及java编译、运行java程序出现的问题

自己动手编译、运行Java程序

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值