我有一个基于gradle的独立项目。当我进行gradle构建时,jar会在build/libs下生成。我如何从命令行运行这个可执行的jar文件?我尝试过:java -cp build/libs/foo.jar full.package.classname
但我得到noClassFoundException为导入的类。如何将依赖的jar包含为classpath的一部分?运行基于gradle项目构建的可执行jar文件
回答
由于问题标记为gradle标记,我假设你想从gradle构建中运行jar。我还假设你使用java
插件来为你的gradle构建。
添加下一行的gradle产出:
task runFinalJar(type: JavaExec) {
classpath = files('build/libs/foo.jar')
classpath += sourceSets.main.runtimeClasspath
main = full.package.classname
}
现在,您可以包括你的任务是构建过程:
build.dependsOn.add("runFinalJar")
或者只是运行它形成的命令行:
gradle build runFinalJar
UPDATE Peter建议使用应用程序插件更清洁
其实我可以从gradle build中成功运行它。我会使用gradle build来创建一个jar文件,并且这个jar会被部署在不一定安装gradle的生产环境中。所以问题是如何运行这个jar? Gradle在内部包含所有依赖jar(来自〜/ .gradle目录)作为classpath的一部分。所以我想知道是否有任何方法可以轻松地使用jar文件。 – coder
'gradlew'将帮助您安装gradle –
我不想在prod环境中安装gradle。但我发现了一个工作。通过编写一个简单的Gradle任务,我能够将我的项目的所有依赖jar添加到一个目录中。现在,我的jar和它的依赖jar被放在一个目录中:〜/ myproject/build/libs。如果我做java -cp *。jar
可以使用application plugin创建一个包含代码,其依赖关系和启动脚本的存档,或者创建一个可执行的fat jar。后者不应该以天真的方式完成,而应该使用gradle-one-jar(或类似的插件)。
这个答案可以通过告诉读者如何识别“天真的方式”来改进,例如,使用'from {configurations.compile.collect {it.isDirectory() ?it:zipTree(it)}}用jar'一个天真的方式? –
是的,这是正确的。 –
我认为答案超出了实际问题的范围。现在的问题是,或者可以重申,如何运行gradle构建的JAR。
提问者声明他们已经尝试java -cp build/libs/foo.jar full.package.classname
无济于事。
正确的语法是java -jar build/libs/foo.jar
,或者如果JAR在那里,显然它通常只是java -jar foo.jar
。
这个问题应该编辑清晰,恕我直言。
- 1. 如何构建gradle spring-boot项目的可执行jar
- 2. 用Gradle和Kotlin构建一个可自行执行的jar
- 3. 使用Gradle创建可运行的JAR
- 4. 从clojure项目创建一个可执行的jar文件?
- 5. 从单个Gradle构建调用打包并运行可执行JAR?
- 6. Fortify SCA基于可执行文件或.o文件构建
- 7. JavaScript的执行程序运行时可执行的JAR文件
- 8. 如何运行使用maven创建的可执行jar文件?
- 9. 运行使用maven构建的可执行jar的错误
- 10. 从Gradle多项目构建构建完全可执行的Spring Boot 1.3战争
- 11. 如何构建一个运行可执行jar的snap包?
- 12. 包括在gradle这个可执行的JAR文件运行时ARGS
- 13. 使用Netbeans构建一个可执行文件.jar文件
- 14. 如何在gradle中执行jar文件?
- 15. 关于可执行jar文件
- 16. Android Studio - 无法运行项目:无法使用Gradle分发执行构建
- 17. 使用分发插件构建项目后运行gradle任务
- 18. 创建可运行的Jar文件。 (java.lang.NoClassDefFoundError)
- 19. 使用gradle构建的可执行jar中的JSP进行Spring引导
- 20. 从jar中创建可执行文件
- 21. 可执行Jar文件FileNotFoundException
- 22. Visual Studio项目构建为可执行文件和DLL
- 23. 在一个项目中构建两个可执行文件
- 24. 如何告诉Maven构建一个可执行的jar文件
- 25. 签名的Jar可以作为可执行文件运行吗?
- 26. 可执行的JAR文件中创建没有得到执行
- 27. Jar没有在基于Maven的项目中执行netbeans
- 28. 如何从Eclipse插件项目生成可执行文件.jar?
- 29. Robotium项目(多模块)的Gradle构建和执行
- 30. Java可执行文件jar文件运行不正常
如果你有一个可执行的jar只使用java -jar path-to-jar-file – Satya
考虑使用应用程序插件。请参阅http://www.gradle.org/docs/current/userguide/application_plugin.html – Jayan
@Satya我无法加载主类清单属性错误。当我使用gradle(gradle run -DmainClass =)运行它时,它将所有jar(来自〜/ .gradle/caches目录)添加为classpath的一部分。是否有任何其他方式只使用构建的jar文件进行操作? –
coder