[英]Is there a way to include native libraries in a JAR, like in Java Webstart, without using Webstart?
[英]How to include jar dependencies in java webstart project
我们正在尝试使用java webstart开发打印应用程序。 我们使用eclipse将jar创建为普通的jar文件。 我们的应用程序需要外部库来连接数据库,将数据转换为字节等。
通过将必要的jar放在jre文件夹的/ ext /目录中,我们能够做到这一点。 但是,这导致了与我们的tomcat服务器的库冲突,因此我们希望避免这种方法。
我们还尝试将项目导出为可运行的jar,因为所需的库也已经打包在jar中。 但是,当尝试运行该应用程序时,似乎无法看到jar中的库。
我们也知道我们可以将所需的库放在jar旁边的文件夹中,并在jnlp文件中逐一引用它们。 但是,我们希望避免这种方法,因为我们有很多外部jar,并且我们不想一个接一个地导入它们:)
所以我的问题是我们如何正确打包java webstart jar? 还有另一种方法吗? 最好的方法是什么?
请参阅下面的jnlp文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://192.168.1.169/webstart/" href="launch.jnlp" spec="1.0+">
<information>
<title>PrinterWebStart</title>
<vendor>robert</vendor>
<homepage href=""/>
<description>PrinterWebStart</description>
<description kind="short">PrinterWebStart</description>
</information>
<update check="always"/>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+"/>
<jar href="printer-base.jar" main="true"/>
</resources>
<application-desc main-class="com.ccti.printer.task.PrinterTaskPanel">
</application-desc>
</jnlp>
打包Web启动应用程序的正确方法是在执行操作时在<resources>
标记中列出正在使用的库jar文件。 我的项目使用12个库文件,并且启动时间仍然相当不错。 当程序第二次启动时,客户端PC所需要做的就是检查jar文件是否未更改。 这使得以后的发射非常快。
如果库中有许多不同的jar文件,则可能会担心将这些文件在服务器上的最后修改日期与本地存储的版本进行比较会浪费一些时间。 为了使此更新检查更有效率,您可以在资源文件中分隔版本号,从而避免不必要的更新检查 。
如果JNLP需要包含签名的代码,那么必须一次唱所有这些jar文件可能会很痛苦。 为了简化此过程,请考虑以下ant脚本,该脚本对lib文件夹中的所有jar进行签名。
<target name="signLibs">
<signjar destDir="signed" alias="aliasName" keystore="yourKeyStoreName"
storepass="PaSSW0rD" force="true" >
<path>
<fileset dir="lib" includes="*.jar" />
</path>
</signjar>
<echo message="Library files were signed."/>
</target>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.