java - 无法解决 java NoClassDefFoundError 但一切看起来都正确......有什么想法吗?

标签 java jar package directory

如果我没有提供足够的信息或者我不清楚任何事情,请提前抱歉,这是我第一次尝试使用 .bat.config 文件.

我正在使用一款学术软件,并尝试添加和运行我自己的组件。系统使用配置文件来启动系统所需的组件(类)列表,使用如下代码:

semaine.components = \
eu.semaine.examples.swimmer.SwimmerDisplay| \

系统运行正常,指定组件初始化。

我使用以下代码将自己的组件添加到现有组件列表中:

eu.semaine.examples.TestPackage.MyTest| \

但是我收到以下错误:

java.lang.NoClassDefFoundError:eu/semaine/examples/TestPackage/MyTest (wrong name: TestPackage/MyTest)

我环顾四周,在我看来,我没有做任何通常会导致此错误的事情,例如我的类名与其存储的文件名匹配(公共(public)类MyTest存储在MyTest.java中),MyTest位于包TestPackage,文件结构中的文件夹也命名为TestPackage

任何想法或建议将不胜感激。

最佳答案

您已要求

eu.semaine.examples.TestPackage.MyTest

但假设您已将该文件放置在名为 TestPackage 的目录中。

仔细查看批处理文件中指定的类路径。我的猜测是,对于初始冲突,您有一个像这样的目录层次结构, Root 于指定的类路径

eu
  semaine
    examples
        swimmer
           SwimmerDisplay

在说 eu.semaine.examples.TestPackage.MyTest 时,您是说该包将是“eu.semaine.examples.TestPackage”,目录层次结构现在将是

eu
  semaine
    examples
        swimmer
           SwimmerDisplay.class
        TestPackage
           MyTest.class

我认为你打算改为:

eu
  semaine
    examples
        swimmer
           SwimmerDisplay.class
TestPackage
  MyTest.class

并说这门课只是

TestPackage.MyTest

不是

eu.semaine.examples.TestPackage.MyTest

[顺便说一句,我同意正常约定不是将包名称大写,但我不相信 Java 从大写中推断出语义。]

关于java - 无法解决 java NoClassDefFoundError 但一切看起来都正确......有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166095/

相关文章:

没有库的 Java jar 文件

java - 将 jar 文件中的控制台值打印到 GUI

java - 在命令Pompt(Gradle Build)中执行Jar文件时出错:NoClassDefFoundError:org/apache/poi/xssf/usermodel/XSSFWorkbook

python - __init__.py 是干什么用的?

java - Java无法访问包外资源

java - 如何让Cardlibs CardView看起来和Android一模一样 支持CardView

java - Java中处理unicode字符并将结果写入mysql和HBase

java - 如何获取给定文本中 N 个最常用的单词,从最大到最小排序?

charts - 在 flutter 中调用多个不同的图表 - charts_flutter 0.5.0 Package

java - Maven - 依赖于多模块聚合器项目