Запустите демонстрацию 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.