java工程打包部署到linux下根据url找jar包里的文件找不到,请教。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java工程打包部署到linux下根据url找jar包里的文件找不到,请教。相关的知识,希望对你有一定的参考价值。

请教问题如下:

现本地windows环境程序解析后的url如下:
file:/E:/ainbs2_ln/html/WEB-INF/classes/com/syncdatamanage/bo/SyncDataLog.bo
传入某方法中进行解析,运行正常。

打包部署到linux上,url被解析成如下格式:
jar:file:/reward/syncdatamanage/ep-syncdatamanage.jar!/com/syncdatamanage/bo/SyncDataLog.bo
运行结果异常,找不到此bo文件。。。现可确认ep-syncdatamanage.jar包存在,并里面包含SyncDataLog.bo,路径也正确。

本人对linux不是很熟,请教各位~请不吝赐教,先谢谢了!

方法不对

你看,你第一个里没有jar出现.
file:/E:/ainbs2_ln/html/WEB-INF/classes/com/syncdatamanage/bo/SyncDataLog.bo
这相当于在本在磁盘里找文件,而不是jar里.
那这样,你的第二种方法就不对了.

URL url = getClass().getResource("/org/xxxxxxxx/bbbbb/cccccc");
你是这样的吗?
如果这样,是不对的,这样只是取得当前运行目录下的文件.

如果想得到jar文件里的文件,需要用
JarFile jar = new JarFile(file);
相当于解析压缩包的方式来找到文件.追问

您好,感谢您的热心回复,可否提供下qq。。这个问题还需要深入讨论下。。。

追答

白天用了不QQ,白天可以用百度hi,你留下QQ,晚上回去加你。
嗯,上面的回答可能有点问题,
我以前做的是将图片放到jar包里,做为资源文件使用。
我需要做的是列出资源列表,上面说的是如何解析。
----------------------------------------------------------------
如果想得到jar文件里的文件,需要用
JarFile jar = new JarFile(file);
相当于解析压缩包的方式来找到文件.
----------------------------------------------------------------

如果你能明确的知道文件的径,
还是使用。
URL url = getClass().getResource("/org/xxxxxxxx/bbbbb/cccccc");
如果造成了你的误解,表示报歉。

--------------------------------------------------------------------------------------------------
我输出了一下我的URL,如下

eclipse 下运行
/D:/Developer/eclipse-galileo/zazww/ZazwwApp/bin/org/torchgreen/zazww/picture/style/lotusflower.jpg

打成jar后运行
file:/E:/deploy/ZazwwApp.jar!/org/torchgreen/zazww/picture/style/lotusflower.jpg

再次对面回答的错误表示歉意。
不同的是我都是在windows下,回去后,找个linux虚拟机试一下。

追问

恩!好的 非常感谢,qq已经发给你了

追答

我的虚拟机,现在联不了网,
晚上我再搞搞

参考技术A 你怎么部署到linux下的。你把找jar包的命令亮出来

以上是关于java工程打包部署到linux下根据url找jar包里的文件找不到,请教。的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins自动打包并部署(以java -jar形势运行)

linux部署j2eeweb工程涉及到的指令

打包SpringBoot工程并部署

如何将vue工程部署到nginx下

[经验] Java Web 项目怎么部署到 Linux 系统上

java 工程里有配置文件 打包成jar文件 找不到配置文件的路径 这个路径该怎么写!!