为什么我的程序找不到我的java类?

为什么我的程序找不到我的java类?,java,maven,jar,maven-2,classpath,Java,Maven,Jar,Maven 2,Classpath,我有一个用Maven编译成jar的项目,我把它命名为H.jar。 我使用的maven命令是(在eclipse中): maven安装 jar文件中有一个名为Person的类。 我已将jar文件添加到Windows计算机上的类路径中 echo %classpath% 回显%classpath% 结果->C:\location\u to\u jar\H.jar 但是当我试图编译程序时,我得到了一个错误: error. Cannot find symbol. 错误找不到符号。 我正在运行命令: java

我有一个用Maven编译成jar的项目,我把它命名为H.jar。 我使用的maven命令是(在eclipse中):

maven安装 jar文件中有一个名为Person的类。 我已将jar文件添加到Windows计算机上的类路径中

echo %classpath% 回显%classpath% 结果->C:\location\u to\u jar\H.jar 但是当我试图编译程序时,我得到了一个错误:

error. Cannot find symbol. 错误找不到符号。 我正在运行命令:

javac Main.java javac Main.java 该类如下所示:

public class Main { public static void main(String[] args) { Person p = new Person("John", "Doe"); p.toString(); } } 公共班机{ 公共静态void main(字符串[]args){ 人员p=新人员(“约翰”、“Doe”); p、 toString(); } }
如果我已将类添加到类路径中,那么程序是否应该只查找该类?

听起来您的程序完全包含在一个jar中,没有外部依赖项,因此我建议您避免使用
%classpath%
环境变量。相反,将Java直接指向jar

假设您的Maven构建已经生成了一个可执行jar,并将您的
Main
类定义为其入口点,那么您就可以执行:

java -jar C:\location_to_jar\H.jar
如果未在生成中定义可执行类,则可以在命令行上定义类路径:

java -cp C:\location_to_jar\H.jar com.mypackage.Main
您需要使用应用程序中定义的适当包名替换上面命令中的包


如果您希望Maven使您的jar可执行,那么您可以使用Maven汇编插件来提供帮助。这里可以找到一个解释这一点的答案:

您是否正在导入
Main
类中的
Person
类?当您说“compile”时,您实际上是指“run”吗?如果类在jar文件中,那么它们已经被编译过了。假设您正在执行该程序,请提供用于执行该程序的命令行。我尝试过使用导入类和不使用导入类进行编译。没有区别。它找不到符号。谢谢史蒂夫。我需要它来运行Hazelcast群集。所以我需要JVM知道jar文件中的类。我将尝试使用Maven汇编插件。
java -jar C:\location_to_jar\H.jar
java -cp C:\location_to_jar\H.jar com.mypackage.Main