我有一个网络应用程序,这取决于一些罐子。该罐子位于WEB-INF/lib
文件夹中。在运行时,我需要将jar复制到另一个文件夹,然后解压缩它。有没有什么办法呢?如何从classpath获取jar文件?
1
A
回答
1
我不确定在哪种情况下您尝试这样做。如果你在Spring应用程序或其他应用程序中,它可能与我在这里描述的有所不同。
如果你是在一个Servlet的上下文中,你可以只是简化Java ClassLoader或者更准确地说你的运行时环境的类加载器在你的情况下很可能是一个应用服务器,比如Tomcat或者Glassfish来获取流阅读JAR文件,例如
InputStream in = getServletContext().getResourceAsStream("/WEB-INF/lib/yourlib.jar");
您将得到一个可用于读取文件的InputStream。然后,您可以使用Apache Commons FileUtils将Stream复制到另一个文件。
File outputFile = File.createTempFile("temp-file-name", ".jar");
FileUtils.copyInputStreamToFile(in, outputFile);
在上面的例子中,我把把代码写入临时目录。我无法回答哪个应用程序服务器实际上允许您写入任意文件系统位置,哪一个不会。所以我认为应该在每个环境中写入临时目录。
为您的最后一步。实际上提取JAR文件我想向你推荐这篇文章,它是如何从Java代码中提取JAR/ZIP文件的极好解释。
当然,你将需要适应给出有再次的文件写入到你在哪里积极的你其实可以写一个位置的例子。
1
您可以使用ServletContext.getRealPath()
来获取真实路径的虚拟路径。
例如获得web应用程序的文件夹WEB-INF/lib
:
File libFolder = new File(ServletContext.getRealPath("/"), "WEB-INF/lib");
为了得到一个特定的jar文件:
File jarFlie = new File(libFolder, "somejar.jar");
Jar文件是正常的zip文件。您可以像其他zip文件一样将其解压缩。有关详细信息,请参阅ZipFile
和JarFile
。
相关问题
- 1. 如何从classloader获取classpath?
- 2. eclipse中的Classpath jar文件
- 3. 从JAR中获取文件
- 4. 如何从.jnlp文件获取.jar文件?
- 5. 如何从jar文件中获取Manifest.mf文件内容
- 6. 将Jar文件放入ClassPath中
- 7. Jar文件与-classpath结合JAVA
- 8. 使用.getResource()从.jar获取文件
- 9. 如何从JAR中提取文件夹
- 10. 如何从.jar文件中提取类?
- 11. Java:如何将jar外的.properties文件包含到classpath中?
- 12. 如何优先考虑eclipse classpath中的jar文件?
- 13. 如何访问spring-boot jar中的classpath文件?
- 14. 如何在linux中的classpath中添加多个jar文件
- 15. 如何在java中为外部jar文件设置classpath?
- 16. Spring Classpath:无法读取JAR内的文件
- 17. 如何_directly_从.JAR子目录中获取文件列表 - JAVA
- 18. 如何从jar文件中获取函数sinatures?
- 19. 如何从jar中获取资源(文件夹)?
- 20. 如何从jar中的文件获取URL
- 21. 如何从jar文件获取方法签名?
- 22. 如何使用Jenkins从nexus获取jar文件?
- 23. 您可以从C++ Lib文件中获取信息,例如如何从Jar文件中获取信息?
- 24. 从jar加载文件时出现问题(classpath问题)
- 25. 从Python中获取.bat文件中构建的CLASSPATH
- 26. 从Spring JAR读取文件
- 27. 如何获取jar文件中的文件夹路径?
- 28. 如何获取JAR文件中目录下的文件列表
- 29. jar小程序classpath
- 30. 如何将jar放入Eclipse的classpath中?
不是简单地通过在类路径中的jar,没有。你为什么想这样做? – 2014-10-08 14:48:26
添加jar作为“添加类文件夹”,那么你不需要明确提取它。 – 2014-10-08 14:48:42