1

我相信这就是我可以编译和运行使用外部库的文件的方式。我正在使用 Windows。

top level directory
|
|-log4-1.2.17.jar
|-MyApp.java
|-com
     |-foo
          |-Bar.java

编译

javac -cp log4j-1.2.17.jar;. com\foo\Bar.java
javac -cp log4j-1.2.17.jar;"com\foo";. MyApp.java

执行

java -cp log4j-1.2.17.jar;"com\foo";. MyApp

编译本身失败。

4

3 回答 3

0

在 java 类路径中包含当前目录

java -cp log4j-1.2.17.jar;. MyApp

为什么必须包含当前目录

The default class path is the current directory. Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings.
于 2012-09-04T11:03:58.157 回答
0

简单的批处理脚本,用于编译所有项目

set COMPILED_CLASSES=.\
set TEMP_FILE=temp
dir .\*.java /s /B > %TEMP_FILE%
javac -classpath log4j-1.2.17.jar;%COMPILED_CLASSES% -d %COMPILED_CLASSES% @%TEMP_FILE%
rm %TEMP_FILE%

将其添加到顶级目录并 逐步 运行
EDIT

javac ./com/foo/Bar.java -classpath log4j-1.2.17.jar  

下一个

javac ./MyApp.java -classpath log4j-1.2.17.jar;./  

java -classpath log4j-1.2.17.jar;./ MyApp  
于 2012-09-04T11:05:36.970 回答
0

Y 需要包含本地目录。如果您想在当前目录中执行此操作,则类似于:

javac -cp .;log4j-1.2.17.jar Bar
于 2012-09-04T11:05:13.707 回答