ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

java – OpenJDK在jar中找不到主类,而OracleJDK可以

2019-08-24 00:01:29  阅读:252  来源: 互联网

标签:java java-8 javafx jar openjdk


我有问题,我根本无法使用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时,它永远找不到主类,即使它在清单中也很难.

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中配置一些东西,以便它可以从清单中找到主类或者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构建

表现:

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就会丢失.这解释了为什么它无法加载Main-Class,因为它继承自javafx.application.Application.

标签:java,java-8,javafx,jar,openjdk
来源: https://codeday.me/bug/20190823/1702642.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有