【问题标题】:Java command promptJava 命令提示符
【发布时间】:2014-04-25 00:29:42
【问题描述】:

我正在尝试使用命令提示符在 java 中编译一个程序。我的程序在 Eclipse 中运行良好,但是,当我尝试在命令提示符下编译它时,我收到一条错误消息。任何帮助和指导将不胜感激。

这是我调用循环类的主程序。 导入逻辑.Loop;

public class Triton {

    Loop loop = new Loop();

    loop.setPreferredSize(new Dimension(600, 600));
    loop.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
    loop.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));

    JFrame frame = new JFrame(TITLE);
    frame.add(loop);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
    device = environment.getDefaultScreenDevice();
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

这是我的循环类

package logic;

public class Loop extends Canvas implements Runnable{
    rest of my code goes here...
}

当我在命令提示符下编译代码时,我在包含主类的目录中,我尝试使用 javac Triton.java 进行编译这是我得到的错误。

Triton.java:9: 错误:包逻辑不存在 导入逻辑.Loop;

Triton.java:20:错误:无法删除符号 循环循环 = 新循环();

符号:类循环 地点:海卫一班 Trion.java:20:错误:找不到符号 循环循环 = 新循环(); sybmol:类循环 地点:海卫一班 3 个错误

【问题讨论】:

    标签: java compiler-construction command javac prompt


    【解决方案1】:

    看起来 Loop 是通过 eclipse 导入的,并且不在构建本身中。因此它不能在 Eclipse 之外引用它。本质上,您的编译器正在编译 Triton 而不拉取 Loop 依赖项。

    试试javac Loop.java Triton.java

    【讨论】:

    • 我将如何导入它?
    • 我在 triton 上截取了具有导入逻辑的导入。循环
    • 我试过了,但它仍然说找不到循环。然而,我只是读了一些说我必须从父目录编译它的东西。在这种情况下来源。这次它确实编译了。但是,当我调用 java Trident 时,我在线程 "main" java.lang.NoClassDefFoundError: Trident(wrong name: main/Trident)... 有什么想法吗?
    • 我打错了,我以为你把它命名为 Trident,你把它命名为 Triton。另一个简单的解决方案是 javac *.java。 * 是一个通配符,它​​将接受任何文本。因此,它会查找该目录中以 .java 结尾的所有文件。如果您的 java 文件位于子目录中,请尝试 javac **/*.java
    • 在处理多个类的项目时,我会创建一个 makefile 以使生活从长远来看更轻松。 cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html 滚动到 Java