使用JNLP将文件安装到主机上并确定结果路径
我正在开发一个应用程序(Sigar),通过单击链接可通过Web浏览器下载。该应用程序将监控机器信息,并且它需要一些库文件来执行此操作(例如libsigar-x86-linux.so,libsigar-x86-freebsd-5.so)。使用JNLP将文件安装到主机上并确定结果路径
我的计划是把本地文件到一个JAR第一,那么当应用程序与JWS下载,我会
- 解压JAR文件,其中包括本地库到一个文件夹
- 找到当前类路径,这是在应用程序运行时确定的。
- 最后,将java.library.path设置为相对于类路径,以便可以找到我的本机库。
目前我正在使用此代码,以确定JAR的路径:
String path = MyClass.class.getProtectionDomain()
.getCodeSource().getLocation().getPath();
但我必须做一些错误的,因为返回的路径是Web服务的路径,而不是一个在当地环境。
任何人都可以指出我目前的计划有哪些错误?谢谢。
如上所述,jnlp
中的本地库文件可能就是您所需要的。
但是,如果由于其他原因想要手动控制展开空间,则可以通过在jar
内嵌入jar
来实现。请参阅:Extract some content from jar-file downloaded with JWS
我还没有测试,但我相信在Java WebStart中的SecurityManager不会允许尝试加载这些文件作为本地库。 – 2013-03-12 15:27:36
我尝试过使用processbuider捆绑和启动一个.exe文件,当运行jnlp时不受限制。但havnt测试了加载dll,所以你可能是对的 – 2013-03-12 15:40:01
此外,Java不太适合封装本机应用程序。如果你只想要一个可下载的Windows应用程序,.NET可能是包装技术的更好选择。 (ClickOnce也许?) – 2013-03-12 15:29:17