0

我刚刚编写了一个 java 应用程序来与血液机器对话。它使用 OAuth 安全性和 XML 将其数据发布到 Web 服务器,并且该应用程序运行良好。

但现在我需要将它分发给拥有这些机器的客户。该程序位于 .jar 文件中,它还需要我的 project/dist 文件夹中的其他 .jar 文件。

在执行期间,它使用小 .png 文件,这些文件在屏幕上显示为图标,用户可以单击等。

我想了解如何将所有这些(包括图像)包装在一起并通过安装程序分发它们,或者我可以使用 Web 服务器。

完成此任务的最佳方法是什么,我尝试复制 .jar 和 dist 文件夹(根据 netbeans 的说明),但是当我运行 java -jar myfile.jar 时,它会打印出我从IOException,因为我没有包含 .png 文件。

PNG文件的代码:我使用这个:

try 
    {
        databaseimage = ImageIO.read(new File("image/database.png"));
        databaseDisconnectedImage = ImageIO.read(new  File("image/database_delete.png"));

    } 
    catch (IOException ioe)
    {
        System.out.println("Problem Creating Systray: "+ioe.getMessage()+" Current Working Directory is: "+System.getProperty("user.dir"));
    }
4

2 回答 2

1

您有多种选择,包括:

  • 构建一个安装程序,在用户机器上安装相关文件。您可以从头开始编写它,也可以使用商业或开源工具来创建安装程序。(在多种操作系统类型上安装变得复杂......)

  • 重构您的应用程序,以便通过类路径而不是直接从文件系统获取所有资源(例如图像)。然后创建一个可执行的“Uber-JAR”,通过分解所有依赖的 JAR 和资源,将文件组装到一棵树中,并对树进行 JAR 处理。(通过向清单中添加几个条目使 JAR 可执行。)

  • 为应用程序创建一个 JNLP 启动器。这仅在最终用户能够访问托管应用程序文件的网站时才有效,但它巧妙地解决了更新应用程序的问题,并确保用户使用的是最新的 JVM。

哪个最好?每种选择都有优点和缺点,您需要找出最适合您的方法

于 2013-10-07T01:34:15.270 回答
0

重击的解决方案是使用 Maven 并创建一个可执行的 jar,也就是一个程序集,也就是一个 jar-with-dependencies。jar 可以包含其依赖项和元数据以正确运行它。

java -jar Client-1.0-SNAPSHOT-jar-with-dependencies.jar

会工作。我假设有一个使用 Ant 的类似解决方案,它是构建 Java 程序的另一种工具。

更多手动操作:想一想 - 无论您使用什么命令(包括用于运行程序的类路径),请确保将其保存到脚本中。它需要的所有文件将其捆绑到一个 .zip 中并将其发送过来,并附上解压缩和 cd 到其中的说明。最终你只是在运行一堆文件,你只需要发送它们并保留目录结构,这样你的脚本就可以工作了。

于 2013-10-07T00:15:09.910 回答