【问题标题】:Gluon Mobile androidinstall applyRetrobuffer ErrorGluon Mobile androidinstall applyRetrobuffer 错误
【发布时间】:2018-03-21 14:50:05
【问题描述】:

我收到Execution failed for task ':ChatAppGluonApp:applyRetrobuffer'. 正在尝试创建 Android APK。我正在使用 Eclipse Oxygen (4.7.3RC2) 和 Windows 7。同样的错误出现在 macOs 10.13.1 和 Eclipse Oxygen (4.7.2) 上。在这两个操作系统上,我都使用带有 Build Tools 26.0.2 的 Android 26。

我尝试使用 Java 8 和 9 运行,但结果是一样的。该程序在桌面上运行良好。

Stacktrace

buildscript {
    repositories {
        jcenter()
        google()
        maven{
            url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
        }
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:2.0.17'
    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    jcenter()
    maven {
        url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
    }
}

mainClassName = 'de.....ChatApplication'

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile 'com.gluonhq:charm:4.4.0-jdk9'
    androidRuntime 'com.gluonhq:charm:4.4.1'
    compile 'com.airhacks:afterburner.mfx:1.6.3'

    compile files('libs/chatFx.jar')
    //compile files('libs/chatFxTest.jar')
    compile files('libs/miglayout-core-5.0.jar')
    compile files('libs/miglayout-javafx-5.0.jar')


    // https://mvnrepository.com/artifact/org.slf4j/slf4j-api
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'

    // https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'

    // https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api
    compile group: 'javax.xml.ws', name: 'jaxws-api', version: '2.2.6'
}

jfxmobile {
    downConfig {
        version = '3.7.0'
        // Do not edit the line below. Use Gluon Mobile Settings in your project context menu instead
        plugins 'display', 'lifecycle', 'statusbar', 'storage'
    }
    android {
        compileSdkVersion = '26'
        buildToolsVersion = '26.0.2'
        manifest = 'src/android/AndroidManifest.xml'
    }
    ios {
        infoPList = file('src/ios/Default-Info.plist')
        forceLinkClasses = [
                'com.gluonhq.**.*',
                'javax.annotations.**.*',
                'javax.inject.**.*',
                'javax.json.**.*',
                'org.glassfish.json.**.*'
        ]
    }
}

【问题讨论】:

    标签: gluon gluon-mobile javafxports


    【解决方案1】:

    根据您对 applyRetrobuffer 任务的例外情况:

    15:26:29.974 [ERROR] [system.err] java.lang.IllegalArgumentException
    15:26:29.974 [ERROR] [system.err]   at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    15:26:29.974 [ERROR] [system.err]   at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    15:26:29.974 [ERROR] [system.err]   at org.javafxports.retrobuffer.ClassAnalyzer.analyze(ClassAnalyzer.java:48)
    15:26:29.974 [ERROR] [system.err]   at org.javafxports.retrobuffer.Retrobuffer$1.visitClass(Retrobuffer.java:59)
    15:26:29.974 [ERROR] [system.err]   at org.javafxports.retrobuffer.ClasspathVisitor.visitFile(ClasspathVisitor.java:59)
    15:26:29.974 [ERROR] [system.err]   at org.javafxports.retrobuffer.ClasspathVisitor.visitFile(ClasspathVisitor.java:41)
    15:26:29.974 [ERROR] [system.err]   at java.base/java.nio.file.Files.walkFileTree(Files.java:2713)
    15:26:29.974 [ERROR] [system.err]   at java.base/java.nio.file.Files.walkFileTree(Files.java:2785)
    15:26:29.974 [ERROR] [system.err]   at org.javafxports.retrobuffer.Retrobuffer.run(Retrobuffer.java:56)
    15:26:29.975 [ERROR] [system.err]   at org.javafxports.retrobuffer.Main.main(Main.java:45)
    

    Android 不支持 Java 9,因此在使用 jfxmobile 2.0.+ 时,您的所有 Android 依赖项都必须使用 Java 8 目标编译。

    在您的情况下,异常表明类路径上至少还有一个类已使用 java 9 或更高版本作为目标进行编译。

    已经有一个文件issue 显示有关导致失败的类的更多信息。

    我不能说您的本地依赖项,但其余的对我来说都很好。至于miglayout-*-5.0,除非你编译过本地版本,都是2014年的。

    无论如何,只要确保将它添加到您使用 Java 9 构建的任何本地依赖项中:

    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    

    顺便说一句,当您成功应用retrobuffer 任务时,您将与依赖项中的重复文件发生一些冲突,例如META-INF/LICENSE.txt 在不同的jar 中。使用packagingOptions,就像这个link一样。

    【讨论】:

      【解决方案2】:

      jfxmobile 2.x 带来了对 Java 9 的支持,但您只能针对 iOS,因为目前还没有支持 Java 9 API 的 Android 版本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多