java - 在控制台中使用在 Eclipse 中创建的包运行代码

标签 java eclipse

我在运行包含 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.Colourtoy.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 进行编译,要么使用像 这样的构建工具。或它理解所有这些东西。

关于java - 在控制台中使用在 Eclipse 中创建的包运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332454/

相关文章:

java - 不知道如何为这个短方法编写 Javadoc

java - jar 不匹配,修复你的依赖

java - 如何将Gradle项目编译为可以在Android应用程序中使用的jar文件

eclipse - Eclipse 最有用的 VI/Vim 插件是什么?

java - 等待来自 JOptionPane 等用户的消息结果

Java JAXB 编码器更改 < 但不更改 > 的编码

Eclipse:导入分支项目时项目名称冲突

java - Maven Clean、Update、Install 和 Eclipse Clean、Refresh、Build——一个通常正确的顺序?

java api来运行Windows批处理程序?

java - 删除txt文件中以字符串开头的所有行? ( java )