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