我创建多个包,并想编译和运行它们。 我摆弄周围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”和“网.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
那是我的类文件的代码:
Queue.java
package net.chris.dojo.datastructures;
public class Queue {
...
}
LinkedList.java
package net.chris.dojo.datastructures;
public class LinkedList {
...
}
MergeSort.java
package net.chris.dojo.sorting;
public class MergeSort {
...
}
Program.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
我在该项目的根文件夹执行所有指令。 谢谢你的帮助。