为了账号安全,请及时绑定邮箱和手机立即绑定

Gradle - 即使打包在 jar 中也无法加载 Java 类

Gradle - 即使打包在 jar 中也无法加载 Java 类

互换的青春 2023-03-23 16:18:29
我的 gradle 构建文件是plugins {    // Apply the java plugin to add support for Java    id 'java'    // Apply the application plugin to add support for building a CLI application    id 'application'}apply plugin: 'java'jar {    from configurations.runtime    manifest {        attributes(            'Created-By':'Gmack',            'Main-Class':'myapprunner.App',            'Class-Path':'mydaos-1.0.jar'        )    }}allprojects{  repositories {      jcenter()  }}subprojects {   version = '1.0'   apply plugin: 'java'}dependencies {    // This dependency is used by the application.    implementation 'com.google.guava:guava:27.1-jre'    // Use JUnit test framework    testImplementation 'junit:junit:4.12'    // Compile Project for dependency    compile project(':mydaos')}application {    // Define the main class for the application    mainClassName = 'myapprunner.App'}当我使用运行应用程序时java -jar myapprunner.jar我得到一个ClassNotFoundExceptionCaused by: java.lang.ClassNotFoundException: com.mydaos.Library    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)    ... 1 more我可以确认罐子已经装好。不知道为什么这没有解决问题。任何帮助,将不胜感激。
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

插件java被应用了两次,很可能是从(or )com.mydaos.Library中拉入的。假设项目未构建或类路径错误。compile project(':mydaos')'Class-Path':'mydaos-1.0.jar'



查看完整回答
反对 回复 2023-03-23
?
萧十郎

TA贡献1815条经验 获得超13个赞

默认情况下,依赖类(项目/外部 jar)不会打包在你的 jar 中。

您正在使用将您的类、依赖项和执行脚本捆绑在一个 zip 中的应用程序插件,因此您应该使用它。该插件还向您的项目添加了一个“运行”任务,以通过 gradle 运行您的主类以用于开发目的。有关更多信息,请参阅应用程序插件文档

如果您想将依赖项打包到您的 jar(称为 uber jar)中,请参见此处。如果你这样做,我建议你停止使用应用程序插件

'Class-Path':'mydaos-1.0.jar'

这假设它mydaos-1.0.jar位于您正在运行的同一文件夹中,java -jar ...但情况可能并非如此


查看完整回答
反对 回复 2023-03-23
  • 2 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信