在我的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停止工作。添加它和我的其他库一样(比如改装),所以这似乎是一个非常奇怪的问题。
如果我已正确解释了问题,请告诉我?