【问题标题】:Receiving errors when trying compile Java from command line尝试从命令行编译 Java 时收到错误
【发布时间】:2018-04-16 03:46:52
【问题描述】:

我正试图让自己从 IDE 中脱离出来——作为一名程序员变得懒惰。在发布之前,我查看了这些网站并没有帮助:

Error compiling Java from command line Compiling java from the command line Javac "cannot find symbol" http://www.javaprogrammingforums.com/java-ides/16906-trouble-running-java-file-windows-command-prompt.html#post71916

我的源文件的路径如下:

D:\workspace\HelloWorld\src\com\dogzilla

该路径中有两个文件:Start.java...

package com.dogzilla;

public class Start{

    public Start() {

    }

    private static final String S = "Hello World";

    public static void main(String[] args) {

        HelloWorld hw = new HelloWorld();
        hw.printHelloWorld(S);
    }

}

...和 ​​HelloWorld.java

package com.dogzilla;

public class HelloWorld {

    public HelloWorld() {
    }

    public void printHelloWorld(String s){
        System.out.println(s);
    }

}

当我将目录更改为D:\workspace\HelloWorld\com\dogzilla\src\main\java 并运行javac Start.java 时,出现以下错误:

Start.java:14: error: cannot find symbol
        HelloWorld hw = new HelloWorld();
        ^
  symbol:   class HelloWorld
  location: class Start
Start.java:14: error: cannot find symbol
        HelloWorld hw = new HelloWorld();
                            ^
  symbol:   class HelloWorld
  location: class Start
2 errors

所以我读到您必须指定类路径,因为 package com.dogzilla; 行。

所以我将目录更改为D:\workspace\HelloWorld 并运行javac -cp com\dogzilla\src\main\java\Start.java(有趣的是,tab 键完成了路径,所以我知道命令提示符找到 Start.java 就好了)它错误:

javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options

如何编译和运行这个原本简单的程序? IDE 会隐藏它,否则我在学习它时遇到问题。

【问题讨论】:

  • 您在Start 类中缺少import HelloWorld 吗?
  • @tima...不,这不是重复的。
  • @tonyhoan... 为什么我需要导入?你好世界?我不需要在 IDE 中...毕竟硬件在同一个类路径和同一个包中。
  • @MGoBlue93 你试过javac Start.java HelloWorld.java?
  • @tima... 是的,javac Start.java HelloWorld.java 有效。根据之前的阅读,我相信这个问题是由于我的包装声明造成的。 IDE 会处理这个问题。 CLI 没有——用户必须指定参数。我显然只是没有指定正确的事情。当我尝试运行 java Start 时,出现错误:无法找到或加载主类 Start。当我尝试 java -cp com.dogzilla Start 或 java -cp com.dogzilla.Start 时,它也会失败。

标签: java command-line classpath javac


【解决方案1】:

你要做的第一件事就是把java代码编译成类文件。 javac 命令用于此目的。

您可以从任何地方运行此命令,只要您捕获所有必须编译的 java 文件。

这将起作用:

[D:\workspace\HelloWorld\src]> javac com\dogzilla\*.java

这也可以:

[D:\workspace\HelloWorld\src\com\dogzilla] java Start.java HelloWorld.java

要运行编译后的代码,请使用java 命令。您必须使用主类的完全限定名称,因此您必须位于根源目录中才能执行此操作。

[D:\workspace\HelloWorld\src]> java com.dogzilla.Start

【讨论】:

  • 谢谢!那行得通。我之前读过,你需要做 java -cp com.dogzilla 启动。使用 java com.dogzilla.Start 代替!
  • @MGoBlue93 你可以这样使用-cpjava -cp . com.dogzilla.Start。注意指向当前目录(src 目录)的点。 -cp 用于指定应用程序所需的其他 jar 的位置,但您没有使用任何其他 jar,因此暂时不需要它
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 2021-11-20
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 2022-10-23
相关资源
最近更新 更多