java - 在 IntelliJ 中运行 JBullet 演示

标签 java intellij-idea jbullet

有没有人在 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 编译似乎会在字节码中添加更多指令节点,而以前没有。具体来说,LineNumberNodeLabelNode 被添加到 LdcInsnNodeMethodInsnNode 之间。

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/

相关文章:

java - 尽管为 api 11 及更高版本设置了 list ,但 Android api 级别 14 上的 GridView 崩溃

opengl - 如何将子弹物理应用于绘制的 Opengl 3d 形状

java - 如何在jBullet中创建 "BoxShape"?

java - 使用 Jetty 6 根据请求来源限制 Servlet 访问

java - 如何在 Java 中创建一个新列表

java - 基于okHttp的ElasticSearch Java客户端

intellij-idea - 如何在idea中禁用自动完成弹出

java - tomcat8 - 主 java HttpServlet 工作,但 ServletContextListener 无法访问 mysql 数据库

go - Intellij 去导入自动完成

java - 使用 Jbullet 进行 3D java 碰撞检测