我有以下文件:
java_classes/TerrainMesh.class
java_classes/TerrainMesh$Vertex.class
Run Code Online (Sandbox Code Playgroud)
它们是从以下来源编译的:
class TerrainMesh {
static class Vertex {
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在构建一个这样的JAR文件:
jar cf jar/cities.jar -C java_classes "cities/TerrainMesh.class" -C java_classes "cities/TerrainMesh$Vertex.class"
Run Code Online (Sandbox Code Playgroud)
检查JAR内容jar tf jar/cities.jar给了我:
META-INF/
META-INF/MANIFEST.MF
cities/TerrainMesh.class
Run Code Online (Sandbox Code Playgroud)
如您所见,TerrainMesh$Vertex.classJAR文件中缺少.可以预见,当我TerrainMesh使用内部Vertex类调用方法时,我得到了java.lang.NoClassDefFoundError.我很确定这是因为内部类不包含在JAR中.
如何将内部类放入JAR文件中?jar cf忽视它似乎很奇怪.
对于它的价值,我已经验证了jar tf在其他人制作的JAR文件上运行确实显示了内部类.
解决方案是在呼叫时逃避美元符号jar cf:
jar cf jar/cities.jar -C java_classes "cities/TerrainMesh.class" -C java_classes "cities/TerrainMesh\$Vertex.class"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2144 次 |
| 最近记录: |