【发布时间】:2010-11-19 14:14:40
【问题描述】:
我的桌面上有一个名为“Stuff”的文件夹,在该文件夹中我有以下内容:
- Hello.java
- mail.jar
而 Hello.java 是从 mail.jar 导入的,所以我需要告诉 Hello.java 去寻找 mail.jar。
从 Windows 命令行和 unix 命令行,我如何编译和运行它?
【问题讨论】:
标签: java unix command-line
我的桌面上有一个名为“Stuff”的文件夹,在该文件夹中我有以下内容:
而 Hello.java 是从 mail.jar 导入的,所以我需要告诉 Hello.java 去寻找 mail.jar。
从 Windows 命令行和 unix 命令行,我如何编译和运行它?
【问题讨论】:
标签: java unix command-line
编译:
javac -cp .;mail.jar Hello.java
; 用于 Windows;使用 : 表示 *nix。
然后运行:
java -cp .;mail.jar Hello
同样,在 Windows 中使用 ;,在 *nix 中使用 :。
-cp 告诉javac 和java 要使用什么classpath,并且由于您的文件位于执行命令的本地目录中,因此您可以使用.对于 Hello 部分和 jar 内路径的 jar 名称。维基百科有一个decent article on classpaths。
请注意,如果您要定期执行此操作,您可能需要设置 CLASSPATH 环境变量,而不是经常使用 -cp 标志。 java 和 javac 都使用 CLASSPATH 变量。
对于我自己的开发机器,为了方便起见,我实际上将. 包含在我的CLASSPATH 变量中。这不是我会在生产或构建/测试盒上做的事情,但它对于开发目的非常方便。你也想把你常用的罐子放在里面。
【讨论】:
假设 Hello.java 不包含包声明,在 Windows 上:
javac -cp mail.jar Hello.java
java -cp mail.jar;. Hello
在 Unix 平台上的唯一区别是您使用冒号而不是分号分隔类路径的元素:
java -cp mail.jar:. Hello
【讨论】:
【讨论】: