libgdx - RoboVM 和 libgdx iOS 示例应用程序失败并显示 'Struct class must be final'

标签 libgdx robovm

我正在尝试将 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/

相关文章:

java - 如何将 Crashlytics 与 RoboVM iOS 绑定(bind)一起使用?

ios - 显示横幅广告时,多点触控无法在具有robovm和libGDX的iOS上运行

ios - 将 sqlite 数据库用于 iOS (robovm) 与 libgdx

groovy - 在子类 gradle 任务中设置项目属性

java - isTouched 和 justTouched 之间的区别

android - 如何使用 LIBGDX 获取 android 设备的屏幕分辨率?

java - Libgdx:配乐循环滞后

ios - 无法导入 robovm 绑定(bind)

java - 敲击时放慢速度?

java - 世界上有更多的 body 时 FPS 速度较慢