我有以下文件:
java_classes/TerrainMesh.class
java_classes/TerrainMesh$Vertex.class
它们是从以下来源编译的:
class TerrainMesh {
static class Vertex {
// ...
}
}
}
我正在构建一个这样的 JAR 文件:
jar cf jar/cities.jar -C java_classes "cities/TerrainMesh.class" -C java_classes "cities/TerrainMesh$Vertex.class"
检查 JAR 内容jar tf jar/cities.jar
给了我:
META-INF/
META-INF/MANIFEST.MF
cities/TerrainMesh.class
如您所见,TerrainMesh$Vertex.class
JAR 文件中缺少 。可以预见的是,当调用TerrainMesh
使用内部Vertex
类的方法时,我得到java.lang.NoClassDefFoundError
. 我很确定这是因为内部类不包含在 JAR 中。
如何将内部类放入 JAR 文件中?jar cf
忽略它似乎真的很奇怪。
对于它的价值,我已经验证jar tf
在其他人制作的 JAR 文件上运行确实显示了内部类。