小编eri*_*k p的帖子

gradle 的 JLink 插件给出错误,无法找到文件

我正在尝试创建一个独立的运行时映像,如答案中所述。当我尝试从 gradle 的“Badass JLink”插件运行 JLink 任务时,出现以下错误:

Execution failed for task ':prepareMergedJarsDir'. > java.io.IOException: Cannot run program "C:\Program" (in directory "C:\Users\erik\AppData\Local\Temp\badass-2371206120064261418"): CreateProcess error=2, The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

我似乎无法在插件文档中找到有关此类错误的任何文档。

我的build.grade文件如下:

plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
    id 'org.beryx.jlink' version '2.14.0'
}

group 'CAM'
version '0.2'
sourceCompatibility = 11

repositories {
    mavenCentral()
}

javafx {
    version = "12.0.2"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: …
Run Code Online (Sandbox Code Playgroud)

java javafx intellij-idea gradle jlink

5
推荐指数
0
解决办法
1873
查看次数

使用 gradle 和 intellij 为 JavaFX 构建 FatJar,得到 NoClassDefFoundError

我已经使用内置的 Gradle 支持在 IntelliJ (2019.2) 中设置了一个 OpenJDK 12 项目。为了设计 GUI,我使用的是 JavaFX 12。我已经多次遵循并阅读了安装指南,在我的 IDE 中运行程序没有问题,问题是当我尝试构建我运行的分发的 .jar 文件时成问题。到目前为止,我还没有找到一个有效的解决方案,我已经搜索了很多,几乎为此而撕裂了我的头发。目前,当我尝试使用 java -jar "jarName".jar 运行我的 jar 文件时,出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at com.CAM.Starter.main(Starter.java:6)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
        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)
        ... 10 more
Run Code Online (Sandbox Code Playgroud)

我尝试将我的主类移动到一个不扩展应用程序的单独类,这就是导致上述错误的原因。不移动我的 Main 类,我会得到一个不同的错误。

我的 build.gradle 目前看起来像这样:

plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8' …
Run Code Online (Sandbox Code Playgroud)

java javafx intellij-idea executable-jar gradle

4
推荐指数
1
解决办法
1976
查看次数

Lua - 将变量与固定值列表进行比较的最有效资源的方法

所以我有一个变量,我们称之为'ID'.我需要相对于固定数量的值检查此值.当然,ID只能匹配其中一个值,因此不会出现停止第一个匹配值的问题,因为其他值都不匹配.变量也有可能与任何给定值都不匹配.那么我的问题是,资源效率最高的方法是什么?我可以想到解决这个问题的两种简单方法.由于我知道编程时的值,我可以使用'或'设置条件,只检查每个值,如下所示:

if (ID == "1" or ID == "16" or ID == "58") then
    --do something--
end
Run Code Online (Sandbox Code Playgroud)

这样做的问题在于它写起来非常冗长乏味.另一个选项涉及foreach循环,我预先定义一个表.

values = {"1", "16", "58"}
for _, value in ipairs(values) do
    if(ID == value) then
        return true
    end
end
Run Code Online (Sandbox Code Playgroud)

这样做的好处是它可以重复使用,因为我需要使用不同的值集进行至少10次精确检查,缺点是我怀疑需要更多资源.

任何帮助将不胜感激.

lua lua-table

3
推荐指数
1
解决办法
223
查看次数

Java SimpleDateFormat引发ParseException:Windows上无法解析的日期,但Mac上没有

我有以下方法:

    public static Date convertFromWowInterface(String wowinterfaceFormat){
        Date date = null;
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yy hh:mm a");
            date = dateFormat.parse(wowinterfaceFormat);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
Run Code Online (Sandbox Code Playgroud)

传递的字符串格式为:

"08-11-19 07:00 AM"
Run Code Online (Sandbox Code Playgroud)

显然没有引号。现在,上述方法在我的Mac上可以正常工作,但是当我的某些用户使用该程序(在Windows上)时,他们会收到异常:

java.text.ParseException: Unparseable date: "08-11-19 07:00 AM"
        at java.base/java.text.DateFormat.parse(DateFormat.java:395)
Run Code Online (Sandbox Code Playgroud)

操作系统是否在这里有所作为?还是还有其他东西在玩?据我所知,SimpleDateFormat与输入字符串完全匹配?

java simpledateformat

2
推荐指数
1
解决办法
62
查看次数