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

标签 java gradle

我的 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 运行应用程序时

我收到一个ClassNotFoundException

Caused 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

我可以确认 jar 已经包装好。不知道为什么这没有解决问题。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

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

关于java - Gradle - 即使打包在 jar 中也无法加载 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57019536/

相关文章:

java - 使用 Gson 序列化和反序列化枚举

java - 由证书签名的 Soap 请求。 WS-安全

gradle - 如何使gradle构建成功完成并出现checkstyle错误?

android - 使用变量时的 Gradle 库版本建议

java - 编译Java/Gradle Discord Bot

java - Gradle自定义插件:读取编译的Java类

java - DataOutputStream 编码和截断

c# - 通过 rand(5) 生成 1-7 之间的随机数

gradle - 如何使用 Gradle 和 IntelliJ 在 Kotlin 多平台项目中配置 JUnit 5?

java 小服务程序。重定向到静态页面不起作用