![](/img/trans.png)
[英]Buffered Images not rendering when project is built as an executable jar file in eclipse
[英]Running an executable jar file built from a gradle based project
我有一个基于 gradle 的独立项目。 当我进行 gradle 构建时,在 build/libs 下生成了 jar。 如何从命令行运行此可执行文件 jar? 我试过: java -cp build/libs/foo.jar full.package.classname
但我得到了导入类的 noClassFoundException。 如何将相关的 jars 作为类路径的一部分包含在内?
由于问题标有 gradle 标签,我假设您想从 gradle build 运行 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
更新:按照彼得的建议使用应用程序插件更干净
要么使用应用程序插件创建包含代码、其依赖项和启动脚本的存档,要么创建一个可执行的胖 Jar。 后者不应该以天真的方式完成,而应该使用gradle-one-jar (或类似的)插件。
添加一个简单的任务来运行jar
task runJar(type: JavaExec) {
main = "-jar";
args jar.archivePath
}
更新: jar.archivePath
现在已弃用,您可以使用jar.archiveFile.get()
task runJar(type: JavaExec) {
main = "-jar";
args jar.archiveFile.get()
}
我认为答案超出了问题的实际意义。 问题是,或者可以重申为,如何运行 gradle 构建的 JAR。
提问者说他们试过java -cp build/libs/foo.jar full.package.classname
无济于事。
正确的语法是java -jar build/libs/foo.jar
,或者如果 JAR 就在那里,显然它只是java -jar foo.jar
正常。
恕我直言,为了清楚起见,应该编辑问题。
我是新手,所以我在这里的解释会很简单。 我的build.gradle
文件只包含一行: apply plugin: 'java'
。 我在src/main/java/org/dx/test/App.java
有一个hello world
java 代码。 在命令 shell 中,我输入: gradle build
。 然后我看到这个 jar 文件神奇地创建了:
build/libs/helloworld.jar
以上所有答案都不起作用。 对我有用的是:
java -cp build/libs/helloworld.jar org.dx.test.App
现在,我知道 gradle 充满了魔法,所以我相信我的情况可能无法完全反映你的情况。 采取的行动是:
build.gradle
文件App.java
gradle build
要在终端中运行 jar,首先使用“gradle clean build”构建一个 jar,然后导航到 -> 构建 -> 分发 -> unzip <filename>.zip file
-> cd 到解压缩文件 -> cd bin
会有 2文件 - projectname & <projectname.bat> 使用 ./projectname 运行 jar
如果有一些参数要传递给主要方法使用:运行 jar with./projectname params
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.