Java包

包的声明

在源文件最开始作包声明:

1
2
3
package com.test.testpackage

...

也可以不提供包声明,这就是使用默认包。通常不推荐。

源文件的路径必须匹配包名称,比如上面的源文件需要被存储在com/test/testpackage下。随后,在包的根目录下使用javac [完整目录]/文件名.java编译源代码,生成的.class文件会被放置在源代码的同级目录中。

运行程序需要使用完整包名+类名。

使用javac xxx -d xxx可以将class文件放在独立目录,不会扰乱源码目录,且class文件也会有正确的目录结构

类路径

1
jar cvf library.jar com/test/testapp/*.class

这样可以将类库打包,便于其他人使用。jar也可以用来打包程序

1
jar cvfe program.jar com.test.testapp.MainClass com/test/testapp/*.class*

然后这样运行程序:

1
java -jar program.jar

使用类库的jar文件时,需要指定class path告诉编译器和虚拟机这些jar文件在哪里。class path可以包含:

  • 包含class文件的目录
  • jar文件
  • 包含jar文件的目录

javac和jar都有-classpath(简写为-cp)选项。例如:

1
java -cp .:../libs/lib1.jar:../libs/lib2.jar com.test.MainClass

在Windows中,需要把上面的冒号换为分号。也可以使用通配符包含所有文件:

1
java -cp .:../libs/\* com.test.MainClass

可以添加manifest文件,来防止其他代码被加入到包中

1
2
3
4
5
//filename: manifest.txt
Name: com/myapp/util/
Sealed: true
Name: com/myapp/misc/
Sealed: true

然后使用下面的jar命令添加manifest:

1
jar cvfm library.jar manifest.txt com/myapp/*/*.class
作者

xeonds

发布于

2023-02-26

更新于

2024-05-13

许可协议

评论