有没有人在IntelliJ中成功运行JBullet演示? 当我使用ant build脚本运行演示时,我发现了这样的错误:
C:\用户\ halin_000 \ ProgrammingProjects \爪哇\ CS351L \ JBullet \ build.xml中:77: java.lang.IllegalStateException:Stack.alloc的第一个参数(Class) 必须是不变的(在课堂上 com.bulletphysics.collision.dispatch.ConvexConcaveCollisionAlgorithm, 方法processCollision)
你如何解决这个问题?
答案 0 :(得分:1)
我今天遇到了同样的问题。几年前我曾经能够构建jbullet,然后我将源代码置于版本控制之下。
事实证明,使用Java 7编译器构建(来自jdk1.7.0_79),使用Java 8编译器(来自jdk1.8.0_101)进行构建时,OP报告的消息会失败。
我认为一个更明确的解决方案是更新vecmath库以满足Java 8编译器的更高标准,但与此同时我将我的工具链恢复到我可以开始的状态。
更新2016-10-08 22h30 EDT
不满足于将我的工具链恢复到Java7,我已经深入研究了这个问题,并将其追溯到JStackAlloc,而不是像我之前想象的那样。
似乎用Java8进行编译会在之前没有的字节码中添加更多指令节点。具体而言, LdcInsnNode 和 MethodInsnNode 之间正在添加 LineNumberNode 和 LabelNode 。
JStackAlloc正在寻找后两个但不期望找到额外的两个节点。可以很容易地修复库以跳过这些额外的节点并在其存在的情况下继续工作。
从maven'ized build of jbullet开始,这是make it work again所需的差异。
请注意,此版本的Javadoc版本似乎已被破坏。可以通过在 pom.xml 配置文件中注释掉 maven-javadoc-plugin 的jar目标来禁用它。