IntelliJ Idea 16 CE gradle问题

时间:2017-03-06 07:47:41

标签: intellij-idea gradle

在我的gradle文件中,我尝试使用以下内容来解决另一个问题。这是我的gradle文件:

group 'com.winapp'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'src/main/java/libs', include: ['*.jar'])
    compile 'com.intellij:forms_rt:6.0.5'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

task copyDependenciesToTarget(type: Copy) {
    println 'Copying dependencies to target...'

    configurations.compile.collect().each { compileDependency ->
        copy {
            with from (compileDependency.getPath()) {
                include '*'
            }
            into 'target/libs/libs'
        }
    }
}

build.dependsOn(copyDependenciesToTarget)


jar {
    manifest.attributes(
            "Main-Class": "Main",
            "Class-Path": configurations.compile.collect { 'libs/' +     it.getName()}.join(' ')
    )
}

问题在于:

configurations.compile.collect().each { compileDependency ->
        copy {
            with from (compileDependency.getPath()) {
                include '*'
            }
            into 'target/libs/libs'
        }
    }

当我运行应用程序时,我得到了这个例外:

org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated cannot be cast to org.gradle.api.internal.file.copy.CopySpecInternal

主要问题是,我不知道如何修复此错误,我只是希望我的项目创建一个与JDBC一起使用的JAR文件,使用这个gradle代码似乎是该问题的解决方案,但现在我已经运行了再次陷入另一个问题。

如果您需要任何其他信息,请告知我们,并提前感谢您。从字面上看,我甚至都不能。这个问题。

修改

如评论中所述。当我通过IDE运行它时,我的项目运行正常。使用gradle创建JAR文件时出现问题。我启动gradle项目时IntelliJ创建的裸gradle文件如下(添加了jar配置,以便我的Main类被选中):

group 'com.winapp'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'src/main/java/libs', include: ['*.jar'])
    compile 'com.intellij:forms_rt:6.0.5'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

jar {
    manifest.attributes(
            "Main-Class": "Main",
            "Class-Path": configurations.compile.collect { 'libs/' + it.getName()}.join(' ')
     )
}

当我使用java -jar myAppName.jar创建JAR(请记住在IDE中运行时没有问题)后从终端执行我的应用程序时:

java.lang.ClassNotFoundException: org.sqlite.JDBC

注意:通常我会运行一个运行Java应用程序的完整堆栈,但在这种情况下,上面是唯一的输出。

我正在使用这个JAR来满足我的sqlite需求:

sqlite-jdbc-3.15.1

作为测试,我在应用程序中注释掉了Sqlite的用法,并且JAR文件运行正常。我的GUI显示出来,一切都按预期进行(所有事情都考虑在内)。当我添加sqlite JAR文件用法(代码)时,JAR停止工作。添加它和我的其他库一样(比如改装),所以这似乎是一个非常奇怪的问题。

如果我已正确解释了问题,请告诉我?

0 个答案:

没有答案