【问题标题】:Why does javac throw compile errors when my IDE does not?当我的 IDE 没有时,为什么 javac 会抛出编译错误?
【发布时间】:2015-09-09 06:27:49
【问题描述】:

我正在使用 IntelliJ 进行 Java 开发。我想在我只有 shell 访问权限的另一台主机上运行我的应用程序。

当我在本地运行我的应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到:

usr@host1:~/mp1/src$ javac -cp ../ Control.java
Control.java:10: error: cannot find symbol
    private static Node genNode = null;
                   ^
  symbol:   class Node
  location: class Control
Control.java:25: error: cannot find symbol
            genNode = new Node(hostname);
                          ^
  symbol:   class Node
  location: class Control
2 errors

文件Node.java在同一目录下:

mp1
├── src
│   ├── ClientControl.java
│   ├── Control.java
│   ├── Node.java
│   ├── Registrar.java
│   ├── ServerControl.java
│   ├── UX.java
├── lib
│   └── kryonet-2.21-all.jar

我也不能在本地编译,除非它来自 IDE,所以我认为我只是没有做正确的事情。我错过了什么?我只是希望能够从 shell 运行我的应用程序,我并不关心如何。

【问题讨论】:

  • 可能你的IDE项目中有一个库,而你的基本lib文件夹中没有,所以编译器找不到它
  • 嗯,也许是这样?我将我的库树添加到帖子中。知道如何修复它以便编译器可以看到它吗?
  • 检查你是否配置了你的JAVA_HOME来测试只是尝试命令echo %JAVA_HOME%
  • 请展示一个简短但完整的程序来说明问题。我们不知道您的代码在什么包中或类似的东西。您可以尝试一次编译所有代码:javac -cp .. *.java
  • @MrDuk:当你运行它时,这听起来像是一个错误(由于没有正确运行它 - 你在尝试运行时没有指定 .java 文件代码,你只需指定类名)。

标签: java shell intellij-idea command-line-interface javac


【解决方案1】:

编译时必须正确设置类路径。

你的类路径有问题。由于您仅将父目录设置为类路径。您还必须包含 src,因为它包含您的其他源文件。

试试:

javac  -cp .:../lib/kryonet-2.21-all.jar Control.java

【讨论】:

  • 酷,这看起来像是正确构建了.class 文件。现在我不知道如何执行我的应用程序。我试过java UX.java,其中包含我的main(),但它只是说Could not find or load main class UX.java
  • 您使用编译后的字节码 (.class),而不是源文件执行应用程序。同样,在类路径中正确包含所有已编译的类和库。
  • 试试 java -cp .:../lib/kryonet-2.21-all.jar UX
  • 宾果游戏!谢谢一堆。奖励积分 - 我的项目布局是否有问题?我应该以不同的方式组织它,还是必须在 cli 中指定这些东西很常见?
  • 您的结构适合简单/学习项目。实际上,Java 世界中很少直接使用“java/javac”。您要么使用 IDE,要么使用 Maven 等构建工具。
【解决方案2】:

找到 /usr/lib/jvm/java-1.x.x-openjdk

vim /etc/profile

添加这两行:

export JAVA_HOME="path that you found"

export PATH=$JAVA_HOME/bin:$PATH

如需更多参考,您可以尝试:- How to set JAVA_HOME in Linux for all users

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多