【问题标题】:ClassNotFoundException Java IssueClassNotFoundException Java 问题
【发布时间】:2012-10-05 15:04:12
【问题描述】:

我编写了 Test.java 来测试数据库连接。

我使用“javac Test.java”成功编译。

但是,我无法使用“java -cp ...”运行我的程序

>AssetMgmtDbTest me$ pwd
/Users/me/Workspace/tmp/AssetMgmtDbTest
>AssetMgmtDbTest me$ ls
Test.class  Test.java   classes12.jar   ojdbc6.jar
>AssetMgmtDbTest me$ java -cp ojdbc6.jar Test
Exception in thread "main" java.lang.NoClassDefFoundError: Test
Caused by: java.lang.ClassNotFoundException: Test
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

请指教。

谢谢, 凯文

【问题讨论】:

  • Test是否属于特定的包? Test.java 中有任何package 语句吗?
  • 没有。测试不属于任何包。

标签: java


【解决方案1】:

将当前目录添加到您的类路径:

>AssetMgmtDbTest me$ java -cp ojdbc6.jar:. Test

注意 jar 后面的附加 :.(冒号 + 点)。

如果你开始使用包,事情会变得更加复杂,因为目录结构很重要。详情请参考this answer

【讨论】:

    【解决方案2】:

    java xxx.java :假定所有必需的类都在其类路径中或标准 java 库的一部分中。

    如果您的类需要任何额外的 jar 或类,那么您必须在类路径中将其指定为 java -classpath .:xxx.jar 类名

    如果引用的类是任何目录的一部分,那么 java -classpath 目录 xxx

    另外,如果具有 main 方法的类放在某个包中,则使用 java -classpath dir pkg.xxx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 2013-10-23
      • 2022-01-22
      • 2020-10-04
      • 1970-01-01
      • 2015-06-23
      相关资源
      最近更新 更多