gpt4 book ai didi

java - 手动运行Gradle的应用程序插件打包的jar

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:28 24 4
gpt4 key购买 nike

我创建了一个简单的 gradle 项目,其中包含应用程序插件。我运行 distZip 任务来创建所有 jar 的 zip。下面是我使用的代码:

build.gradle

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'

sourceCompatibility = 1.7
version = '1.0'

repositories {
mavenCentral()
}

project(':Module') {
jar {
manifest {
attributes 'Main-Class': 'com.sample.HelloWorld'
}
}
}

dependencies{
compile 'joda-time:joda-time:2.7'
testCompile group: 'junit', name: 'junit', version: '4.11'
}

mainClassName = "com.sample.HelloWorld"

com.sample.HelloWorld.java

package com.sample;

import org.joda.time.LocalTime;

public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
}
}

运行 distZip 任务后,我解压生成的 build/distribution/Module-1.0.zip 存档,该存档具有以下目录结构:

Module-1.0
|__bin
|__lib
|__Module-1.0.jar
|__joda-time-2.7.jar

在 lib 目录中,我尝试了以下命令:

java com.sample.HelloWorld -cp Module-1.0.jar;joda-time-2.7.jar

输出如下:

Error: Could not find or load main class com.sample.HelloWorld

然后我尝试了:

java -jar Module-1.0.jar -cp joda-time-2.7.jar

这给出了输出:

Exception in thread "main" java.lang.noClassDefFoundError: org/joda/time/LocalTime...

我确保在 Manifest.MF 文件中,Main Class 属性设置为 com.sample.HelloWorld,所以我的问题是为什么运行 java 命令会导致“找不到主类”错误,但使用 java -jar 命令不会导致该错误?

另外,为什么当我运行 java -jar 命令时,Java 找不到 joda-time-2.7.jar 依赖项?

我知道您可以使用 gradlew run 命令运行该程序 - 我尝试过,它运行得很好。我只是很好奇为什么运行传统的 java 命令不起作用。

最佳答案

试试这个:

java -cp Module-1.0.jar:joda-time-2.7.jar:. com.sample.HelloWorld

关于java - 手动运行Gradle的应用程序插件打包的jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28013579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com