命令行编译java文件


为了便于管理,在当前目录下建立了三个文件夹src、bin以及jar。分别用于存放源文件、字节码文件以及jar包.


简单编译

在路径./src下有java文件Test1.java

public class Test1 {
	public static void main(String[] args) {
		System.out.println("Hello world");
	}
}

编译

javac -d bin src/Test1.java

运行

cd bin
java Test1

-d 路径表示将编译好的.class 文件放在该路径下,也可以省略该选项,直接将编译好的文件放在源文所在的文件夹下。


编译带包名的java类

在路径./src/package1/package2下有java文件TestPackage.java

package package1.package2;
public class TestPackage {
	public static void hw() {
		System.out.println("Hello World");
	}
	public static void main(String[] args) {
		System.out.println("Hello world");
	}
}

编译

javac -d bin src/package1/package2/TestPackage.java  

编译成功后会在./bin目录下生成文件package1/package2/TestPackage.class
运行

cd bin
java package1.package2.TestPackage 

打包jar文件

在上一个例子中,在./bin目录下生成了一个.class文件,现在将其打包成为jar文件,方便以后使用。
打包方法

jar cf JAR文件名称 程序文件名称或者程序所在的文件夹

对于前面的例子"TestPackage",使用以下命令打包便于下面的使用

cd bin
jar -cf ../jar/Test.jar package1/

这样在./jar下会生成一个名为Test.jar的文件


导入外部jar包

在上一个例子中生成了一个jar文件,现在编写一个类来使用该jar包。类的源文件位于./src中。

import package1.package2.TestPackage;
public class TestJar {
	public static void main(String[] args) {
		TestPackage.hw();
	}
}

编译

javac -classpath jar/Test.jar -d bin/ src/TestJar.java 

运行

cd bin
java TestJar


遇到的问题

打包和导包时的问题

我也不知道为什么不可以直接在当前目录下直接使用命令①jar -cf jar/Test.jar bin或者②jar -cf jar/Test.jar bin/package1直接打包,而是一定要到./bin目录下去。当我使用这个命令直接打包的时候,在下面的导包环节中会出现错误:

javac -classpath jar/Test.jar -d bin src/TestJar.java
src/TestJar.java:1: 错误: 程序包package1.package2不存在
import package1.package2.TestPackage;
                        ^
src/TestJar.java:4: 错误: 找不到符号
		TestPackage.hw();
		^
  符号:   变量 TestPackage
  位置: 类 TestJar
2 个错误

在使用命令②打包时,为了解决上面的报错,尝试着将TestJar.java文件的第一行改为了import bin.package1.package2;,但是不但没有解决问题,反而还导致了下面的问题

javac -classpath jar/Test.jar -d bin src/TestJar.java
src/TestJar.java:1: 错误: 无法访问TestPackage
import bin.package1.package2.TestPackage;
                            ^
  错误的类文件: /home/***/code/java/spd/jar/Test.jar(/bin/package1/package2/TestPackage.class)
    类文件包含错误的类: package1.package2.TestPackage
    请删除该文件或确保该文件位于正确的类路径子目录中。
  src/TestJar.java:4: 错误: 找不到符号
		TestPackage.hw();
		^
  符号:   变量 TestPackage
  位置: 类 TestJar
2 个错误

这到底是为什么我还没搞清楚…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值