簡體   English   中英

當我從 Linux 的命令行運行 Java class 文件時,為什么會出現 NoClassDefFoundError?

[英]Why am I getting a NoClassDefFoundError when I run a Java class file from the command line in Linux?

我正在嘗試從 linux 命令行運行test.class文件。 我使用javac test.java編譯了文件,生成了test.class文件。 當我運行命令java test時,它會引發 class 未找到異常。 我還嘗試使用相同的結果指定 package 名稱。 這是output,有人可以幫忙嗎? 根據谷歌搜索,我相信我的語法是正確的。

[root@localhost usr]# java test
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: testJava/test)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: test. Program will exit.

您需要使用 javac 編譯您的.java 文件:

  javac MyFile.java

然后使用 java 運行文件

  java MyFile

如果您正在這樣做,但它仍然不起作用,這意味着您需要確保文件和文件中的 class 名稱具有相同的名稱......所以 MyFile.java 包含

  class MyFile
  {
     // ...
     public static void main(String[] args)
     {
        // ...
     }
     // ...
  }

使用java testJava.test父目錄下的 java testJava.test

假設您的 class 看起來像這樣:

package javaTest;

public class test{
    public static void main(String[] a){
        System.out.println("Test");
    }
}

然后編譯和運行文件,你基本上是這樣做的:

$ ls
testJava
$ ls testJava
test.java
$ javac testJava/test.java
$ java testJava.test
Test

What this means is that you have to run the class with its fully qualified name, which includes the package name of the class.You also have to do it from the directory that conatins the root of your package. (除非您使用-cp標志指定“根”目錄。)

我最初也有問題。

java -cp。 測試

試試這個鏈接,我想它可能會對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM