首页 > 解决方案 > java从同一个包中的另一个类调用一个类

问题描述

所以我在关注本教程: https ://spring.io/guides/gs/maven/

我为软件克隆了他们的存储库,因为担心输入错误。javac当我使用编译 Greeter.java然后使用运行 HelloWorld.java 文件时代码不起作用java它给了我以下错误:

HelloWorld.java:5: error: cannot find symbol
        Greeter greeter = new Greeter();
        ^
  symbol:   class Greeter
  location: class HelloWorld
HelloWorld.java:5: error: cannot find symbol
        Greeter greeter = new Greeter();
                              ^
  symbol:   class Greeter
  location: class HelloWorld
2 errors

我尝试使用在没有语句ìmport hello.Greeter 的情况下运行代码时,将 Greeter 显式导入 HelloWorld 中 。package hello;

知道为什么我会收到此错误吗?

所以我按照教程并使用mvn package命令和生成项目的 jar 文件工作。

尝试在命令行中使用 java 命令编译它的问题也是如此。

添加项目的目录结构

pom.xml src     target

./src:
main

./src/main:
java

./src/main/java:
hello

./src/main/java/hello:
Greeter.java    HelloWorld.java


标签: java

解决方案


我假设您在目录中时尝试编译源代码src/test/java/hello。那是错误的目录,您必须从目录中执行此操作src/test/java并将目录(即包)传递给编译器,例如

javac hello/*.java

另一个原因可能是你还没有编译Greeter.java,所以编译器在编译时没有找到类文件Hello.java。上面的命令应该可以解决这个问题。

如果你在 hello run 中有一个 main 方法 java hello/name-of-file.java 来运行你的 main 方法。


推荐阅读