- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
新Java开发人员遇到的一个常见问题是他们的程序无法运行并显示错误消息:Could not find or load main class ...
这是什么意思,是什么原因造成的,以及如何解决?
最佳答案
java <class-name>
命令语法
首先,您需要了解使用java
(或javaw
)命令启动程序的正确方法。
常规语法1是这样的:
java [ <options> ] <class-name> [<arg> ...]
<option>
是命令行选项(以“-”字符开头),
<class-name>
是标准Java类名称,而
<arg>
是传递给应用程序的任意命令行参数。
packagename.packagename2.packagename3.ClassName
java
命令允许您使用斜杠代替句点。例如
packagename/packagename2/packagename3/ClassName
java
命令的外观示例:
java -Xmx100m com.acme.example.ListUsers fred joe bert
java
命令执行以下操作:
com.acme.example.ListUsers
类的编译版本。
main
给出的修饰符的
public static void main(String[])
方法。 (请注意,方法参数的名称不是签名的一部分。)
String[]
传递给命令行参数(“ fred”,“ joe”,“ bert”)。
java
命令无法找到该类。实际上,消息中的“ ...”将是
java
正在寻找的完全限定的类名。
java ListUser
com.acme.example
之类的包中声明该类时,则必须在
java
命令中使用完整的类名,包括包名。例如
java com.acme.example.ListUser
java ListUser.class
java com/acme/example/ListUser.class
java com.acme.example.listuser
java com.acme.example.mistuser
java ListUser.java
java lots of arguments
java
命令找不到该类。要了解这一点,您需要了解“类路径”的概念。 Oracle文档对此进行了很好的解释:
java
command documentation
java
命令时有效的CLASSPATH环境变量。检查目录名和JAR文件名是否正确。
java
命令时有效的当前目录中检查它们是否正确解析...。
;
,在其他Windows上是
:
。如果您在平台上使用了错误的分隔符,则不会收到明确的错误消息。相反,您将在Windows上获得不存在的文件或目录。会被忽略的路径。)
com.acme.example.Foon
的类时,它将查找具有以下路径名的“ .class”文件:
/usr/local/acme/classes/com/acme/example/Foon.class
com.acme.example.Foon
,那么JVM将在目录“ com / acme / example”中查找“ Foon.class”:
Caused by: java.lang.NoClassDefFoundError: <path> (wrong name: <name>)
com.acme.example.Foon
类,
/usr/local/acme/classes/com/acme/example/Foon.class
,
/usr/local/acme/classes/com/acme/example/
,
# wrong, FQN is needed
java Foon
# wrong, there is no `com/acme/example` folder in the current working directory
java com.acme.example.Foon
# wrong, similar to above
java -classpath . com.acme.example.Foon
# fine; relative classpath set
java -classpath ../../.. com.acme.example.Foon
# fine; absolute classpath set
java -classpath /usr/local/acme/classes com.acme.example.Foon
-classpath
选项可以缩短为
-cp
。检查相应的手册条目中的
java
,
javac
等。
package
声明。如果在IDE中执行此操作,则IDE的编译器会立即告诉您有关此信息。同样,如果您使用不错的Java构建工具,则该工具将以检测问题的方式运行
javac
。但是,如果您手动构建Java代码,则可以通过这种方式进行处理,以使编译器不会注意到问题,并且生成的“ .class”文件不在您期望的位置。
-Xdiag
选项添加到
java
命令行(作为
java
之后的第一件事)。它将输出有关类加载的各种信息,这可能会为您提供真正问题的线索。
(META-INF/*.SF)
中具有错误签名的JAR文件启动,显然可以遇到此问题。
java
的替代语法
java command
启动Java程序有三种语法。
java [ <options> ] -jar <jar-file-name> [<arg> ...]
java -Xmx100m -jar /usr/local/acme-example/listuser.jar fred
com.acme.example.ListUser
)和类路径在JAR文件的MANIFEST中指定。
java [ <options> ] --module <module>[/<mainclass>] [<arg> ...]
<module>
本身定义,或由可选的
<mainclass>
给出。
java [ <options> ] <sourcefile> [<arg> ...]
java
命令的官方文档。
java
命令行。
关于java - “找不到或加载主类”是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59827707/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!