java - gradle 中的依赖项不链接 jar

标签 java gradle

我有一个包含两个项目的 gradle 设置。布局:

build.gradle
libtestapp/
  >src/
    >main/
      >java/
        >testapp/
          >Test.java
settings.gradle
testapp-gui/
  >src/
    >main/
      >java/
        >testapp/
          >TestGui.java

项目 testapp-gui 使用 libtestapp 中的函数。 项目 testapp-gui 在运行 gradle :testapp-gui:build 时进行编译。 但是当运行 jar 时,Java 提示缺少类 Test。

构建.gradle:

subprojects {                                                                                                                                                                                                    
    apply plugin: 'java'
}

project(':testapp-gui') {
    dependencies {
        compile project(':libtestapp')
    }

    jar {
        manifest {
            attributes 'Main-Class': 'testapp.TestGui'
        }
    }
}

设置.gradle:

包含“libtestapp”、“testapp-gui”

测试.java:

package testapp;                                                                                                                                                                                                 

public class Test {

    public static void call() {
        System.out.println("Hi, Im in libtestapp.");
    }

}

TestGui.java:

package testapp;                                                                                                                                                                                                 

import testapp.Test;

public class TestGui {

    public static void main(String[] args) {
       Test.call();
    }

}

Java 错误:

Exception in thread "main" java.lang.NoClassDefFoundError: testapp/Test
  at testapp.TestGui.main(TestGui.java:8)
Caused by: java.lang.ClassNotFoundException: testapp.Test
  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 1 more

最佳答案

除非您从 IntelliJ 或其他 IDE 中执行应用程序,否则在使用命令行时,您需要使用 '-classpth''-cp 显式包含依赖项' 开关:

java -cp .;libs\*.jar your.package.MainClass

关于java - gradle 中的依赖项不链接 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150015/

相关文章:

scala - 使用ProGuard缩小Scala

android - Gradle汇编任务后,AndroidManifest.xml编码不可读

java - ImageIO.createImageInputStream 不断返回 null

Java 并发 : thread-safe modification of values in maps

android - 如何使用 Gradle 工具在 Android 中使用不同的数据库构建不同的 APK 文件?

android - gradle设置:找不到com.google.android.gms.internal.zzbgl

android - 如何在 Android 上运行 ProGuard 测试?

java - 使用xpath和vtd-xml获取元素的子节点和文本作为字符串

java - 将字符串数组中的项目与 HashMap 的 ArrayList 中的项目进行比较

java - 关闭 Channel 或需要关闭 RandomAccessFile 是否足够