使用 javac/java 手动编译和 运行 多个包
Manually compile and run multiple packages using javac/java
假设我有以下文件夹结构:
\src\com\proj\pp1\stuff 其中 com.proj.pp1
和 com.proj.pp1.stuff
是我拥有的两个包:
-src
-com
-proj
-pp1
tester.java
-stuff
some other .java's
作为 tester.java 中的主要函数,并使用 /stuff 中声明的 classes。
在 tester.java
中,我这样声明导入:
package com.proj.pp1;
import com.proj.pp1.*;
并且在 stuff 下声明的所有文件中:
package com.proj.pp1.stuff;
没有任何导入。
我能够让 .class 执行以下操作,位于 /pp1
文件夹中:
javac tester.java stuff/*.java
但是当我尝试 运行 测试仪 class:
java tester
它给我错误输出:
无法找到或加载主要 class 测试程序
如果我尝试 java com.proj.pp1.tester
也是一样
您认为实际问题可能是什么?
javac
以 files 作为参数,所以它应该是
cd src
javac com/proj/pp1/tester.java
应该编译 tester.java
和所有相关的 classes.
和 java
以主要的 class 作为参数,所以 运行 你这样做:
java com.proj.pp1.tester
(调用 java com.proj.pp1.tester
时确保 com/proj/pp1/tester.class
存在。)
您可能需要阅读 javac
的 -d
选项以避免将您的 classes 放在源目录中。
javac -d bin src/*.java src/stuff/*.java
java -classpath bin src.Main
假设我有以下文件夹结构:
\src\com\proj\pp1\stuff 其中 com.proj.pp1
和 com.proj.pp1.stuff
是我拥有的两个包:
-src
-com
-proj
-pp1
tester.java
-stuff
some other .java's
作为 tester.java 中的主要函数,并使用 /stuff 中声明的 classes。
在 tester.java
中,我这样声明导入:
package com.proj.pp1;
import com.proj.pp1.*;
并且在 stuff 下声明的所有文件中:
package com.proj.pp1.stuff;
没有任何导入。
我能够让 .class 执行以下操作,位于 /pp1
文件夹中:
javac tester.java stuff/*.java
但是当我尝试 运行 测试仪 class:
java tester
它给我错误输出:
无法找到或加载主要 class 测试程序
如果我尝试 java com.proj.pp1.tester
您认为实际问题可能是什么?
javac
以 files 作为参数,所以它应该是
cd src
javac com/proj/pp1/tester.java
应该编译 tester.java
和所有相关的 classes.
和 java
以主要的 class 作为参数,所以 运行 你这样做:
java com.proj.pp1.tester
(调用 java com.proj.pp1.tester
时确保 com/proj/pp1/tester.class
存在。)
您可能需要阅读 javac
的 -d
选项以避免将您的 classes 放在源目录中。
javac -d bin src/*.java src/stuff/*.java
java -classpath bin src.Main