我在运行包含 Eclipse IDE 之外的包的项目时遇到问题,因此我创建了一个简单的示例来说明该问题。
我在 Eclipse 中创建了一个名为 Toy 的项目来表示某种简单的玩具。 Eclipse生成的文件夹的布局为:
📦toy
┣ 📂bin
┃ ┗ 📂toy
┃ ┃ ┣ 📂toy_data
┃ ┃ ┃ ┣ 📜Colour.class
┃ ┃ ┃ ┗ 📜Phrases.class
┃ ┃ ┗ 📜Toy.class
┣ 📂src
┃ ┗ 📂toy
┃ ┃ ┣ 📂toy_data
┃ ┃ ┃ ┣ 📜Colour.java
┃ ┃ ┃ ┗ 📜Phrases.java
┃ ┃ ┗ 📜Toy.java
┣ 📜.classpath
┗ 📜.project
toy.java导入toy.toy_data.Colour和toy.toy_data.Phrases,从Eclipse我可以成功运行toy .java...
但是,如果我 cd 进入 /toy/src/toy 并尝试运行
javac Toy.java
我收到以下错误:
Toy.java:3: error: package toy.toy_data does not exist
import toy.toy_data.Colour;
^
Toy.java:4: error: package toy.toy_data does not exist
import toy.toy_data.Phrases;
^
Toy.java:10: error: cannot find symbol
Phrases p = new Phrases();
^
symbol: class Phrases
location: class Toy
Toy.java:10: error: cannot find symbol
Phrases p = new Phrases();
^
symbol: class Phrases
location: class Toy
Toy.java:11: error: cannot find symbol
Colour c = new Colour();
^
symbol: class Colour
location: class Toy
Toy.java:11: error: cannot find symbol
Colour c = new Colour();
^
symbol: class Colour
location: class Toy
6 errors
我尝试搜索一堆,因为它似乎与类路径相关,但我似乎无法理解它。从前两个错误来看,它似乎无法找到我的包裹,所以我尝试了
javac -cp "/toy_data/" Toy.java
尽管这也没有解决问题。我还查看了 Eclipse .classpath 文件,但这似乎不太有用。
玩具.java
package toy;
import toy.toy_data.Colour;
import toy.toy_data.Phrases;
public class Toy
{
public static void main(String[] args)
{
Phrases p = new Phrases();
Colour c = new Colour();
c.print();
}
}
颜色.java
package toy.toy_data;
public class Colour
{
public void print()
{
System.out.println("I am the colour red!");
Phrases p = new Phrases();
p.print();
}
}
短语.java
package toy.toy_data;
public class Phrases
{
public void print()
{
System.out.println("Hello there.");
}
}
最佳答案
javac 需要能够计算出导入类的位置。最简单的方法是从 src
目录运行 javac 命令并使用:
javac toy/Toy.java
请注意,这会将输出 .class 文件放在与源文件相同的目录中。要输出到 bin
目录,命令为:
javac -d ../bin -sourcepath . toy/Toy.java
一般来说,您不经常直接使用 javac,您要么让 Eclipse 进行编译,要么使用像 maven 这样的构建工具。或gradle它理解所有这些东西。
关于java - 在控制台中使用在 Eclipse 中创建的包运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332454/