我刚刚编写了一个与血液机器通信的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"));
}
答案 0 :(得分:1)
您有多种选择,包括:
构建一个安装程序,在用户的计算机上安装相关文件。您可以从头开始编写它,也可以使用商业或开源工具来创建安装程序。 (在多种操作系统类型上安装变得复杂......)
重构您的应用程序,以便通过类路径而不是直接从文件系统获取所有资源(例如图像)。然后创建一个可执行的“Uber-JAR”,通过展开所有依赖的JAR和资源,将文件组装到一个树中,然后对树进行JAR。 (通过向清单添加几个条目使JAR可执行。)
为应用程序创建JNLP启动程序。这仅在最终用户能够访问承载应用程序文件的网站时才有效,但它巧妙地解决了更新应用程序的问题,并确保用户使用的是最新的JVM。 / p>
哪个最好?每种选择都有利有弊,你需要找出最适合你的 。
答案 1 :(得分:0)
重击的解决方案是使用Maven并创建一个可执行jar,a.k.a。一个程序集,a.k.a。一个jar-with-dependencies。 jar可以包含其依赖项和元数据,以便正确运行它。
java -jar Client-1.0-SNAPSHOT-jar-with-dependencies.jar
会工作吗?我假设有一个使用Ant的类似解决方案,这是构建Java程序的另一个工具。
更多手动:只需考虑一下 - 无论包括用于运行程序的类路径的命令,请确保将其保存到脚本中。它需要的所有文件都将它捆绑到一个.zip中并将其发送出去,并将其解压缩并插入其中。最终你只是运行一堆文件,你只需要发送它们并保留目录结构,这样你的脚本就可以工作。