gpt4 book ai didi

java - OpenJDK 无法在 jar 中找到主类,而 OracleJDK 可以

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:40:28 25 4
gpt4 key购买 nike

我遇到了问题,我根本无法使用 OpenJDK 运行任何 jar,而对于普通的 OracleJDK 则没有问题。

OpenJDK # java -version

openjdk version "1.8.0_101"
OpenJDK Runtime Environment (IcedTea 3.1.0) (suse-14.3-x86_64)
OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)

当我用这个 JDK 运行一个 jar 时,它永远找不到主类,即使它在 list 中也很难找到。


OracleJDK # java -version

java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

当我用这个 JDK 启动一个 jar 时,没有问题。

我是否需要在 OpenJDK 中配置一些东西,以便它可以从 list 中找到主类,或者 OpenJDK 未能这样做的原因是什么?

编辑:

源文件结构:

-- ui  
---- Main.java

Gradle 构建脚本:

group 'some.group'
version '0.1'

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

mainClassName = "ui.Main"

sourceCompatibility = 1.8

repositories {
mavenCentral()
}

dependencies {
compile group: 'org.zeromq', name: 'jeromq', version: '0.3.5'
compile group: 'org.controlsfx', name: 'controlsfx', version: '8.40.12'

testCompile group: 'junit', name: 'junit', version: '4.11'
}

jar {
manifest {
attributes 'Implementation-Title': 'PlaceholderTitle',
'Implementation-Version': version,
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': mainClassName
}
}

使用 installDist 构建

list :

Manifest-Version: 1.0
Implementation-Title: PlaceholderTitle
Implementation-Version: 0.1
Class-Path: jeromq-0.3.5.jar controlsfx-8.40.12.jar
Main-Class: ui.Main
//new line here

最佳答案

好的,我找到了答案。问题是我有一个 JavaFX 应用程序,而安装的 OpenJDK 运行时环境不支持它,我不明白这一点,因为 JavaFX 是 Java 8 标准的一部分。

OpenJDK lib/ext 文件夹:

cldrdata.jar       nashorn.jar
dnsns.jar sunec.jar
icedtea-sound.jar sunjce_provider.jar
jaccess.jar sunpkcs11.jar
localedata.jar zipfs.jar
meta-index

如你所见,熟悉的jfxrt.jar不见了。这解释了为什么它不能加载主类,因为它继承自 javafx.application.Application

关于java - OpenJDK 无法在 jar 中找到主类,而 OracleJDK 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267122/

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