小编Blo*_*360的帖子

javapackager无法在macOS上生成dmg

我正在尝试使用javapackager从罐子中生成dmg。

这是我在终端中输入的内容:

cd "/Users/name/Documents/JarToApplication"
jdk=$(/usr/libexec/java_home -v 1.8)
$jdk/bin/javapackager -deploy -native dmg -BappVersion=8 -name DMSLauncher -srcdir . -srcfiles DMSLauncher.jar -appclass com.blockhead7360.dms.launcher.DMSLauncher -Bicon=package/macosx/DMSLauncher.icns -outdir deploy -outfile DMSLauncher -v
Run Code Online (Sandbox Code Playgroud)

它一直运行到这里:

Running [osascript, /var/folders/z5/n802xjnx49l4535kq63992280000gn/T/fxbundler8419176091447096668/macosx/DMSLauncher-dmg-setup.scpt]
/var/folders/z5/n802xjnx49l4535kq63992280000gn/T/fxbundler8419176091447096668/macosx/DMSLauncher-dmg-setup.scpt:635:742: execution error: Finder got an error: The operation can’t be completed because there is already an item with that name. (-48)
java.io.IOException: Exec failed with code 1 command [[osascript, /var/folders/z5/n802xjnx49l4535kq63992280000gn/T/fxbundler8419176091447096668/macosx/DMSLauncher-dmg-setup.scpt] in unspecified directory
    at com.oracle.tools.packager.IOUtils.exec(IOUtils.java:165)
    at com.oracle.tools.packager.IOUtils.exec(IOUtils.java:138)
    at com.oracle.tools.packager.IOUtils.exec(IOUtils.java:132)
    at com.oracle.tools.packager.mac.MacDmgBundler.buildDMG(MacDmgBundler.java:376)
    at com.oracle.tools.packager.mac.MacDmgBundler.bundle(MacDmgBundler.java:92)
    at com.oracle.tools.packager.mac.MacDmgBundler.execute(MacDmgBundler.java:556)
    at com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:352)
    at com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:319) …
Run Code Online (Sandbox Code Playgroud)

java macos terminal dmg javapackager

5
推荐指数
1
解决办法
265
查看次数

getPath()不返回斜杠?(视窗)

我正在编写一个程序,其中涉及编辑文件并用路径替换占位符。

这是代码:

List<String> lines = Files.readAllLines(new File(new File(basepath, "Game"), "launcher_profiles.json").toPath());
        int index = -1;
        for (String s : lines){
            index++;
            if (s.contains("PROGRAM/GAMEDIRPATH")) break;
        }

        String k = lines.get(index);
        k = k.replaceAll("PROGRAM/GAMEDIRPATH", new File(basepath, "Game").getPath());
        lines.set(index, k);
        clearFile(new File(new File(basepath, "Game"), "launcher_profiles.json"));
        Files.write(new File(new File(basepath, "Game"), "launcher_profiles.json").toPath(), lines, StandardOpenOption.CREATE);
Run Code Online (Sandbox Code Playgroud)

基本路径“游戏”文件路径没有问题,因为在我程序的所有其他位置,它都包含斜杠。仅在此部分中替换不包含斜杠的占位符。

例如,它不是C:/ Users \ name \ Documents \ program \ Game,而是返回UsersnameDocumentsprogramGame。

就像我之前说的,在所有其他地方,它返回正确的路径名(带有斜线)。在Mac上,所有斜线都存在,即使在这一部分也是如此。

有人知道解决方法吗?谢谢。

java

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

标签 统计

java ×2

dmg ×1

javapackager ×1

macos ×1

terminal ×1