我正在使用Gradle构建一个项目,但是每当我想通过java-JAR手动启动JAR时
我已经发现我需要在Gradle项目中添加以下行:
mainClassName = 'projectz.ProjectZ'
jar {
manifest {
attributes('Main-Class': project.mainClassName)
}
}
然而,这并不能解决问题。我不能执行我的罐子。用我的IDE(eclipse)构建同一个jar给了我一个工作的jar。将我的
META-INF
文件夹复制粘贴到Gradle生成的我的JAR中也不能解决问题。
对于我的设置,我使用以下插件:
plugins {
id 'java'
id 'application'
id 'eclipse'
id 'idea'
}
我的项目还依赖于通过Gradle依赖项导入的另一个项目(因为这是一个多项目设置):
编译项目(': Lib')
这个依赖项也没有添加到我的jar文件中,但是当我运行InstDist
witing Gradle时,它被添加,我可以启动我的JAR(只考虑Gradle放在文件夹中的一些批处理文件),java突然找到我的主类(它不是依赖项的一部分,而是主项目的一部分)。试图在正常的java-jar上运行我的jar文件
我搜索java给我的错误,并将丢失的行添加到我的build.gradle文件中,认为这并不能解决我的问题。我还在Gradle留档中搜索,以确定我是否遗漏了一些东西,但找不到任何丢失的东西。
全新Java 8安装(我的项目使用)
您使用Gradle构建脚本生成的jar
是一个标准jar,而不是一个胖jar(请参阅胖jar描述),这就是为什么您不能使用java-jar直接执行此jar
因此,您应该更改您的buidld脚本以获取一个胖罐子,或者使用由应用程序
gradle插件生成的打包应用程序。
对于构建胖罐子,您有不同的解决方案,例如:
mainClassName = "org.mycompany.gradle.MainApp"
jar {
manifest {
attributes('Main-Class': project.mainClassName)
}
// HERE : include dependencies into the jar
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
其他解决方案可以在那里找到:https://www.baeldung.com/gradle-fat-jar
问题内容: 我正在尝试使用Gradle运行一个非常简单的项目,并在使用时遇到以下错误: 这是我的文件结构: 我排除了libs和tmp文件夹的内容,因为我认为这与该问题无关,但是我可以在需要时添加它。 这是我的build.gradle文件: 关于如何解决此问题的任何想法?我已经为mainClassName属性尝试了各种方法,但似乎没有任何效果。 问题答案: 我在这里看到两个问题,一个与另一个有关。
我试图复制Spring Boot Kotlin示例项目https://github.com/jetbrains/kotlin-examples/tree/master/tutorials/spring-boot-restful。我添加了更多的依赖项,当我试图构建可执行jar并运行它时,我得到了错误:
我遇到一个问题,gradle fatJar/uberJar在尝试运行jar时导致以下异常: 简单的jar任务 没有问题(直到它开始需要依赖项)。 我假设这与我的一个依赖项更改类路径有关,但我不确定为什么会发生这种情况。 build.gradle的相关部分 Gradle构建文件在这里(与代码的其余部分): https://github.com/domhauton/membraned/blob/mas
这是我的build.gradle文件: 有什么办法解决这个问题吗?对于mainClassName属性,我尝试了各种方法,但似乎都不起作用。
我刚刚从spring boot版本“2.2.1.RELEASE”更新到了2.5.6,同时我也将gradle版本更新到了7.0。在更新之前一切正常,但是在更新之后,bootRun任务似乎没有找到主类。 这是收到的错误: 在此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 8.0 不兼容。使用“--警告模式全部”来显示各个弃用警告。查看 https://docs.gradle.org/
我的java应用程序编译有问题。 编译器说: