Запустите демонстрацию JBullet в IntelliJ

Кто-нибудь успешно запускал демонстрацию JBullet в IntelliJ? Когда я запустил демо-версию с помощью скрипта 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)

Как вы решаете проблему?

1 ответ

Я столкнулся с той же проблемой сегодня. Я имел обыкновение собирать jbullet несколько лет назад, и тогда я поставил исходный код под контроль версий.

Оказывается, сборка с помощью компилятора Java 7 (из jdk1.7.0_79) работает нормально, в то время как сборка с помощью компилятора Java 8 (из jdk1.8.0_101) завершается неудачно с сообщением, сообщенным OP.

Я полагаю, что более определенным решением было бы обновить библиотеку vecmath, чтобы она соответствовала более высоким стандартам компилятора Java 8, но в то же время я вернул свой набор инструментов в состояние, в котором я могу начать работу.

Обновление 2016-10-08 22:30 EDT

Не удовлетворенный возвратом моего набора инструментов в Java7, я углубился в эту проблему и проследил ее до JStackAlloc, а не из-за того, что я раньше думал.

Казалось бы, компиляция с Java8 добавляет больше узлов инструкций к байт-коду, где раньше их не было. В частности, LineNumberNode и LabelNode добавляются между LdcInsnNode и MethodInsnNode.

JStackAlloc ищет последние два, но не ожидает найти дополнительные два узла. Библиотеку легко исправить, чтобы пропустить эти дополнительные узлы и выполнять свою работу, несмотря на их наличие.

Начиная с maven'ized сборки jbullet, вот разница, необходимая для того, чтобы она снова заработала.

Обратите внимание, что сборка Javadoc этого выпуска, похоже, не работает. Его можно отключить, закомментировав цель jar maven-javadoc-plugin в файле конфигурации pom.xml.

Другие вопросы по тегам