我创建了多个包并想要编译和运行它们。我摆弄javac
并java
了解了如何命名包以及如何构建项目。我希望我没事。但是我在编译和运行这些东西时失败了。我知道我可以为此使用 IDE,但出于好奇,我想使用命令行工具进行尝试。这是我的项目的组织方式:
Project
+ src
+ net
+ chris
+ dojo
- Program.java
+ datastructures
- Queue.java
- LinkedList.java
+ sorting
- MergeSort.java
+ bin
+ net
+ chris
+ dojo
- Program.class (should be here but missing because compilation fails)
+ datastructures
- Queue.class
- LinkedList.class
+ sorting
- MergeSort.class
“数据结构”和“排序”包中的类的编译工作正常。这是我使用的命令。“bin”文件夹中的文件夹结构由编译器自动创建。
javac -d bin src\net\chris\dojo\datastructures\*.java
javac -d bin src\net\chris\dojo\sorting\*.java
问题是当我尝试编译“Program.java”(这是我从命令行运行的测试类)时,编译器抛出错误,因为它找不到包“net.chris.dojo.datastructures”和“net .chris.dojo.sorting”。这是编译命令:
javac -d bin src\net\chris\dojo\Program.java
这是我得到的输出:
src\net\chris\dojo\Program.java:3: error: cannot find symbol
import net.chris.dojo.datastructures;
^
symbol: class datastructures
location: package net.chris.dojo
src\net\chris\dojo\Program.java:4: error: cannot find symbol
import net.chris.dojo.sorting;
^
symbol: class sorting
location: package net.chris.dojo
src\net\chris\dojo\Program.java:11: error: cannot find symbol
MergeSort.sort(values);
^
symbol: variable MergeSort
location: class Program
src\net\chris\dojo\Program.java:12: error: cannot find symbol
Queue queue = new Queue();
^
symbol: class Queue
location: class Program
src\net\chris\dojo\Program.java:12: error: cannot find symbol
Queue queue = new Queue();
^
symbol: class Queue
location: class Program
src\net\chris\dojo\Program.java:13: error: cannot find symbol
LinkedList list = new LinkedList();
^
symbol: class LinkedList
location: class Program
src\net\chris\dojo\Program.java:13: error: cannot find symbol
LinkedList list = new LinkedList();
^
symbol: class LinkedList
location: class Program
7 errors
那是我的类文件的代码:
队列.java
package net.chris.dojo.datastructures;
public class Queue {
...
}
链表.java
package net.chris.dojo.datastructures;
public class LinkedList {
...
}
合并排序.java
package net.chris.dojo.sorting;
public class MergeSort {
...
}
程序.java
package net.chris.dojo;
import net.chris.dojo.datastructures;
import net.chris.dojo.sorting;
public class Program {
public static void main(String[] args) {
int[] values = { 9, 4, 6, 2, 0, 3, 8, 1, 7, 5 };
MergeSort.sort(values);
Queue queue = new Queue();
LinkedList list = new LinkedList();
}
}
我会用这个命令运行它:
java -cp bin net.chris.dojo.Program
我在项目的根文件夹中执行所有命令。谢谢你的帮助。