Kotlin 胶囊 Gradle 错误

Kotlin Capsule Gradle Error

我在尝试使用 Gradle 创建胶囊时遇到错误。

Failed to find Premain-Class manifest attribute in 

E:\Dropbox\Projects\Kotlin\Games\CSGO\Charlatano\build\libs\capsule.jar
Error occurred during initialization of VM
agent library failed to init: instrument
CAPSULE: Client connection failed.
CAPSULE EXCEPTION: Accept timed out while processing null null: null (for stack trace, run with -Dcapsule.log=verbose)
Press any key to continue . . .

这是我的 build.script

buildscript {
    ext.kotlin_version = '1.1-M01'
    ext.jna_version = '4.3.0-SNAPSHOT'
    ext.quasar_version = '0.7.6'
    ext.gdxVersion = '1.9.4'

    repositories {
        mavenCentral()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap-1.1' }
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'application'

group 'com.charlatano'
version '0.4.3'

mainClassName = 'com.charlatano.Charlatano'

sourceCompatibility = JavaVersion.VERSION_1_8

repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    maven { url 'https://dl.bintray.com/kotlin/kotlin-eap-1.1' }
}

configurations {
    quasar
    capsule
}

dependencies {
    compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: kotlin_version

    compile group: 'net.java.dev.jna', name: 'jna', version: jna_version
    compile group: 'net.java.dev.jna', name: 'jna-platform', version: jna_version

    compile group: 'org.jire.arrowhead', name: 'arrowhead', version: '1.2.1'

    capsule group: 'co.paralleluniverse', name: 'capsule', version: '1.0.3'
    quasar group: 'co.paralleluniverse', name: 'quasar-core', version: quasar_version

    compile group: 'co.paralleluniverse', name: 'quasar-core', version: quasar_version
    compile group: 'co.paralleluniverse', name: 'quasar-actors', version: quasar_version
    compile group: 'co.paralleluniverse', name: 'quasar-kotlin', version: quasar_version

    compile "com.badlogicgames.gdx:gdx:$gdxVersion"
    compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"

    compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
    compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
    compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
}

task capsule(type: Jar, dependsOn: jar) {
    archiveName = "capsule.jar"
    from jar // embed our application jar
    from { configurations.runtime } // embed dependencies

    from(configurations.capsule.collect { zipTree(it) }) { include 'Capsule.class' } // we just need the single Capsule class

    manifest {
        attributes(
                'Main-Class'  :    'Capsule',
                'Application-Class'   : mainClassName,
                'Extract-Capsule' : 'false', // no need to extract the capsule
                'Min-Java-Version' : '1.8.0',
                'JVM-Args' : run.jvmArgs.join(' '),
                'System-Properties' : run.systemProperties.collect { k,v -> "$k=$v" }.join(' '),
                'Java-Agents' : configurations.quasar.iterator().next().getName()
        )
    }
}

run {
    jvmArgs "-javaagent:${configurations.quasar.iterator().next()}"
}

这是它生成的 jar 文件。 https://dl.dropboxusercontent.com/u/91292881/ShareX/2016/09/libs.zip

请告诉我哪里不对,谢谢!

capsule 中的 MANIFEST.md 似乎损坏了,缺少如下 Premain-Class 属性:

Premain-Class: org.eclipse.package.ObjectSizeFetcher

您的 capsule 清单文件应如下所示:

Manifest-Version: 1.0
Created-By: 1.5.0_18 (Sun Microsystems Inc.)
Premain-Class: org.eclipse.package.ObjectSizeFetcher

检查类似问题以查找更多信息:"Failed to load Premain-Class manifest attribute" while trying to get the size of an object using java agent