【问题标题】:java: Could not find the main class: test/test. Program will exitjava:找不到主类:test/test。程序将会退出
【发布时间】:2012-12-28 07:55:12
【问题描述】:

我得到了一些我想测试一些功能的源代码示例。 不幸的是,我在执行程序时遇到了问题:

11:41:31 [linqus@ottsrvafq1 example]$ javac -g  test/test.java
11:41:52 [linqus@ottsrvafq1 example]$ java -classpath . test/test
Exception in thread "main" java.lang.NoClassDefFoundError: test/test (wrong name: test)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: test/test.  Program will exit.
11:42:57 [linqus@ottsrvafq1 example]$

我能做什么?

【问题讨论】:

  • 你能提供你的 test.java 吗?
  • 请提供test.java的源码。
  • 公共类测试 { public static final String USER_NAME = "Test";公共静态最终字符串 USER_PASSWORD = "TEST";公共静态最终字符串 RCA_PRODUCT_NAME = "LPM";私有静态 CardManagerAccessPoint cardManagerAccessPoint = null; public static void main(String[] args) throws Exception{ ExampleInvocation(); } 公共静态无效 ExampleInvocation() { .... }
  • 没有包名
  • 参考我的解决方案建议。它应该可以工作。

标签: java class find main


【解决方案1】:

这可能是大小写问题,您的类名与您从命令中调用的不同。 假设您的班级名称是Test,并且您在命令行中提供了test

http://javarevisited.blogspot.in/2011/06/noclassdeffounderror-exception-in.html

【讨论】:

    【解决方案2】:

    你需要运行它:

    java -classpath test test
    

    第一个test 是您的.class 文件所在目录的名称。第二个test 是您要运行的Java 类的名称。通常你需要在这里指定完整的包名,但是由于你的类在全局包中,这里只传递test 就可以了。

    【讨论】:

      【解决方案3】:

      要使用 java 命令运行类,您需要使用 .而不是 /

      假设 test 是一个名为 test 的包中的一个类,正如您的 javac 命令所建议的那样。

      例如

      java -classpath . test.test
      

      您还应该遵循 java 命名约定,并以大写字母开头命名您的类。应该是test.Test,以便更容易区分类和包

      你的编译是正确的,因为 / 应该在使用 javac 时使用

      【讨论】:

        【解决方案4】:

        将代码读入 IDE(eclipse、intellij、netbeans)可能会突出显示问题。

        您的代码似乎缺少一些简单的东西(即包名称)。

        【讨论】:

          【解决方案5】:

          我对 Java 没有太多经验,但据我所知,您应该使用完全限定的 Java 类名来运行文件:

          // Assuming that the class is called "test" and is not in any package
          java -classpath test test
          
          // If "test" is actually in the package "test" :
          java -classpath . test.test
          

          【讨论】:

          • 这个似乎没问题,部分解决了我的问题。现在我有新错误: java -classpath 。线程“主”中的 test.test 异常 java.lang.NoClassDefFoundError:com/gemplus/gxs/api/exception/DeniedAccessException 原因:java.lang.ClassNotFoundException:com.gemplus.gxs.api.exception.DeniedAccessException at java.net .URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) .... 找不到主类:test.test。程序将退出。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-13
          • 2011-11-28
          • 2011-03-31
          • 1970-01-01
          相关资源
          最近更新 更多