当前位置: 首页 > 知识库问答 >
问题:

我的jar可以在Ubuntu上运行,但不能在Windows上运行

吴宏扬
2023-03-14

我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。

我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。

我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。我认为它调用regex包--它位于我的FileHandler类的构造函数中。所以看起来这是一个问题。

您可以在GitHub上看到完整的代码:

https://github.com/samredway/pwstore/tree/master/src/com/redway_soft/pwstore

目标机器上的Java版本是:1.8.0_45,构建机器上的版本也是一样。

编辑引起问题的特定部分似乎是我的FileHandler类的构造函数。它看起来像这样:

public FileHandler() {       

    String path = this.getClass().getProtectionDomain().getCodeSource()
            .getLocation().toString().substring(5);

    String[] arry_path = path.split(File.separator);

    path = "";
    for (int i = 0, j = arry_path.length - 1; i < j; i++) {
        path += arry_path[i] + File.separator;
    }

    PASSWORDS = path + "data" + File.separator + "passwords.sec";

}

共有1个答案

汤博
2023-03-14

这条线好像是你的问题。

String[] arry_path = path.split(File.separator);

Windows上的文件分隔符不同于Unix操作系统(如Ubuntu)上的文件分隔符。

Windows中使用的文件分隔符是\,这是regex中的一个特殊字符,需要转义才能编译regex。

String[] arry_path = path.split(Pattern.quote(File.separator));
 类似资料:
  • 下面是我的discord music player bot,我用Maven和Java8编译并安装了它,使用了以下步骤: 下面是我的pom.xml 发送播放音乐的命令后出错... 我曾尝试将此方法改为Cp1252编码,但仍然失败。

  • 这些天我正在学习微服务架构,我需要运行Kafka来遵循一些教程。然而,zookeeper-server-start在cmd上运行Kafka的第一步对我来说不起作用。它说“命令的语法不正确” 我遵循了下面的过程 > 下载kafka和extarct(https://kafka.apache.org/downloads-kafka2.11-2.1.0.tgz(二进制下载)) bin\windows\zo

  • 我的应用程序在emulator上运行得很好,但当我导出后在我的智能手机(galaxy s3)上运行它时,它会在这个活动中崩溃,因为有HTTP连接!问题出在哪里?代码还是导出?当我点击连接按钮时,它崩溃了。

  • 在我的应用程序中,对于特定的< code>EditText,我希望句子的第一个字母是大写字母。所以我用了< code > Android:input type = " textCapSentences " 。 奇怪的是这适用于模拟器,但不适用于模拟器。我什至尝试了,即使它已被弃用,但它不起作用。 相关事实: > 模拟器操作系统:4.0.3 真实设备操作系统:4.0.4 应用minSdk版本:2.3

  • 我用ReactJS制作了一个网络应用程序。它在本地主机上运行良好。然而,当我部署到Azure时,每次导航到新页面或重新加载页面时,我都会收到404个错误。 我正在使用Browser路由器,我从网上查看中了解到这有时会导致问题,但我还没有找到解决它的方法。 我在 GitHub 中有该应用程序,因此在 Azure 中我链接到存储库。除了由create-react-app生成的代码外,我还有一个web.