我正在尝试将 libgdx Android 应用程序移植到 iOS,并测试示例 libgdx 应用程序以了解如何连接这些点。我能够让 IOSDemo 应用程序在模拟器上成功运行,但所有示例 libgdx 应用程序都会失败并出现错误:
An internal error occured during: "Launching cuboc-iosrobovm".
Struct class must be final
控制台输出为:
12/29/13 1:04:04 AM: [ INFO] Building executable
12/29/13 1:04:08 AM: [DEBUG] Compiling org.robovm.rt.bro.ptr.BytePtr$Ptr (ios x86)
随后是错误对话框。我尝试按照说明设置环境,但我很困惑为什么 IOSDemo 成功编译了该类,而所有 libgdx 应用程序却不能。以下是错误日志中的附加信息。
异常堆栈跟踪:
java.lang.IllegalArgumentException: Struct class must be final
at org.robovm.compiler.ClassCompiler.compile(ClassCompiler.java:514)
at org.robovm.compiler.ClassCompiler.compile(ClassCompiler.java:279)
at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:198)
at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:216)
at org.robovm.eclipse.internal.AppCompilerThread.run(AppCompilerThread.java:60)
session 数据:
eclipse.buildId=4.3.0.M20130911-1000
java.version=1.7.0_45
java.vendor=Oracle Corporation
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US
Framework arguments: -product org.eclipse.epp.package.standard.product
-keyring /Users/dev/.eclipse_keyring -showlocation
Command-line arguments: -os macosx -ws cocoa -arch x86_64
-product org.eclipse.epp.package.standard.product
-data /Users/dev/Files/workspace/libgdx
-keyring /Users/dev/.eclipse_keyring -showlocation
我的设置:Mac OS X Mavericks、Eclipse 4.3、Xcode 5.0.1、RoboVM 0.0.7、libgdx @ origin/HEAD。
我从 0.0.8 开始尝试了 libgdx 的几个分支和几个 RoboVM nightlies,并尝试回到 0.0.6。我假设它是一个配置设置,但我被卡住了。我感谢任何帮助寻找解决方案的人。
最佳答案
RoboVM 中内置的 Java 到 native 框架目前正在进行一些重大重构。您遇到的问题可能是由于使用 RoboVM nightly 版本的库和 RoboVM Eclipse 插件的不兼容版本造成的。确保您使用的 RoboVM 库版本与 Eclipse 插件版本相同,例如0.0.7。
如果您想使用最新的夜间库(不推荐),您还应该使用 Eclipse 插件的夜间构建。使用更新站点http://download.robovm.org/nightlies/eclipse/在 Eclipse 中获取最新的夜间版本。
关于libgdx - RoboVM 和 libgdx iOS 示例应用程序失败并显示 'Struct class must be final',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823457/