在windows中从命令行执行java程序失败

在windows中从命令行执行java程序失败,java,exception,cmd,javac,noclassdeffounderror,Java,Exception,Cmd,Javac,Noclassdeffounderror,我试图在Windows中从命令行运行一个非常简单的单类Hello World程序 .java文件位于C:\Users\UserName\Desktop\direcName。包是demise,类名是test 我可以使用javac test.java将cd刻录到目录中并从那里编译它,这非常好。但是,当我尝试使用以下命令运行它时: java测试或java-classpath目录测试或java-cp。测验 它在主线程java.lang.NoClassDefFoundError:test中引发异常错误名称

我试图在Windows中从命令行运行一个非常简单的单类Hello World程序

.java文件位于C:\Users\UserName\Desktop\direcName。包是demise,类名是test

我可以使用javac test.java将cd刻录到目录中并从那里编译它,这非常好。但是,当我尝试使用以下命令运行它时:

java测试或java-classpath目录测试或java-cp。测验 它在主线程java.lang.NoClassDefFoundError:test中引发异常错误名称:dem/test

如果我使用java deem.test,它会说:Error,找不到或加载主类deem.main

如何修复异常并使程序运行


谢谢

如果类位于包中,那么您需要像这样包含包名

java deem.test

这应该行得通。

如果类位于包中,则需要像这样包含包名

java deem.test

这应该行得通。

这是从命令行运行Java程序时常见的初学者错误的变体

java测试或java-classpath目录测试或java-cp。test它在主线程java.lang.NoClassDefFoundError中引发异常:test错误名称:dem/test

JVM实际上是在告诉您在搜索路径上找到了test.class,但当它读取类文件时,它得出结论认为该文件应该位于./dem/test.class或目录/dem/test.class。。。取决于实际使用的-cp/-classpath参数

如果我使用java deem.test,它会说:Error,找不到或加载主类deem.main

现在它告诉您它找不到deem/main.class

注意,您现在告诉它查找名为deem.main的类,而不是test或deem.test。或者你只是在那里转录了一些不正确的东西

规则其实相当简单:

必须将完全限定类名作为选项后的第一个参数提供给java。不是简单的类名。不是.class文件名。不是入口点方法的名称。 必须指定类路径,以便java命令可以 将类名映射到类文件的相对路径名,例如foo.bar.baz.MyClass映射到foo/bar/baz/MyClass.class。。。 然后根据其中一个类路径条目解析该相对路径;e、 g.如果。是类路径,然后是./foo/bar/baz/MyClass.class。 该类必须具有所需的public static void mainString[]入口点方法。 所以如果

类的完全限定类名为deime.test;i、 e.测试类在包中,并且 相应的类文件位于./dem/test.class中,并且 它具有所需的入口点方法,并且 测试应用程序不依赖于您的其他类或第三方库。。。
然后是java-cp。deem.test应该可以工作。

这是从命令行运行Java程序时常见的初学者错误的变体

java测试或java-classpath目录测试或java-cp。test它在主线程java.lang.NoClassDefFoundError中引发异常:test错误名称:dem/test

JVM实际上是在告诉您在搜索路径上找到了test.class,但当它读取类文件时,它得出结论认为该文件应该位于./dem/test.class或目录/dem/test.class。。。取决于实际使用的-cp/-classpath参数

如果我使用java deem.test,它会说:Error,找不到或加载主类deem.main

现在它告诉您它找不到deem/main.class

注意,您现在告诉它查找名为deem.main的类,而不是test或deem.test。或者你只是在那里转录了一些不正确的东西

规则其实相当简单:

必须将完全限定类名作为选项后的第一个参数提供给java。不是简单的类名。不是.class文件名。不是入口点方法的名称。 必须指定类路径,以便java命令可以 将类名映射到类文件的相对路径名,例如foo.bar.baz.MyClass映射到foo/bar/baz/MyClass.class。。。 然后根据其中一个类路径条目解析该相对路径;e、 g.如果。是类路径,然后是./foo/bar/baz/MyClass.class。 该类必须具有所需的public static void mainString[]入口点方法。 所以如果

类的完全限定类名为deime.test;i、 e.测试类在包中,并且 相应的类文件位于./dem/test.class中,并且 它具有所需的入口点方法,并且 测试应用程序不依赖于您的其他类或第三方库。。。
然后是java-cp。dem.test应该有效。

问题中提到,他试过了,但没有用。没有用。当我这样做时,它找不到类。还要确保在测试类DOE中有公共静态void mainString args[]方法
s test.class必须位于deem目录中?@crayons确保命令行文件没有在包含.class的文件夹中运行。它需要在包文件夹外运行。问题中提到,他尝试过,但不起作用。不起作用。当我这样做时,它找不到该类。另外,请确保测试类中存在公共静态void mainString args[]方法test.class是否必须位于deem目录中?@crayons确保命令行文件未在包含.class的文件夹中运行。它需要在包文件夹外运行。请共享测试源代码…您可以将cd刻录到哪个目录?请描述您正在使用的目录结构。请共享测试源代码…您可以cd到哪个目录?请描述您正在使用的目录结构。