为什么当被调用的类明确定义在同一目录中时,我总是收到“找不到符号”错误?

问题描述 投票:0回答:1

这是我试图将其转换为 .jar 文件的 java 程序的基本示例:

当我尝试编译它时,出现此错误:

我最初是在一个更复杂的程序上遇到这个错误的,我想确保它不仅仅出现在那个特定的程序上。我对这个错误做了很多研究,但无法弄清楚为什么会发生。类在同一目录下定义清晰,没有错别字。

是否有可能 Java 无法正常工作,我应该重新安装或更新它?

java compiler-errors jar classpath cannot-find-symbol
1个回答
0
投票

对于

javac
,您需要指定
classpath
(如 @user85421 建议)并在清单中设置正确的
Package-Name
Main-Class

源文件和清单(相对于项目根目录):

src/test/Bruh.java

package test;

public class Bruh {

    public static void main(String[] args) {
        System.out.println("Bruh");

        new Cheese(1, 2);
    }
}

src/test/Cheese.java

package test;

public class Cheese {

    public Cheese(int one, int two) {
        System.out.println(one + " cheese, " + two + " cheese.");
    }
}

清单.txt

Manifest-Version: 1.0
Created-By: Developer
Package-Name: test
Main-Class: test.Bruh
  1. 在终端中打开项目根目录并编译源文件:
javac -cp src src/test/Bruh.java src/test/Cheese.java
  1. 要立即运行主类,请使用:
java -cp src test.Bruh
  1. 移动到
    src
    目录并构建一个jar。
cd src
jar cfm ../bruh.jar ../manifest.txt test/Bruh.class test/Cheese.class
  1. 返回并运行它。
cd ..
java -jar bruh.jar

输出:

Bruh
1 cheese, 2 cheese.

随着文件数量的增加和项目结构变得更加复杂,使用普通的

javac
变得越来越困难。这就是为什么构建工具经常被建议

© www.soinside.com 2019 - 2024. All rights reserved.