有没有人在IntelliJ中成功运行JBullet演示?
当我使用ant build脚本运行演示时,发现了这样的错误:
C:\ Users \ halin_000 \ ProgrammingProjects \ Java \ CS351L \ JBullet \ build.xml:77:
java.lang.IllegalStateException:Stack.alloc(Class)的第一个参数
必须恒定(在课堂上
com.bulletphysics.collision.dispatch.ConvexConcaveCollisionAlgorithm,
方法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,而不是像我以前认为的那样。
用Java8进行编译似乎将更多的指令节点添加到以前没有的指令中。具体来说,在LdcInsnNode和MethodInsnNode之间添加了LineNumberNode和LabelNode。
JStackAlloc正在寻找后两个节点,但是不希望找到额外的两个节点。修复库以跳过这些额外的节点并尽管存在它们即可执行其工作很容易。
从maven'ized build of jbullet开始,这是make it work again所需的差异。
请注意,此发行版的Javadoc构建似乎已损坏。可以通过在pom.xml配置文件中注释掉maven-javadoc-plugin的jar目标来禁用它。