Java 无法将Jar文件的内容写入Tomcat 7.0.22上的本地Servlet
下午好 我试图以编程方式提取jar文件的内容,并找到了一个代码段,该代码段允许我在本地机器上提取jar文件的内容,而无需使用servlet 现在我知道了代码的工作原理,我正在尝试在本地servlet环境中使用它,特别是Tomcat7.0.22。到目前为止,我有下面的代码,但无法输出jar的内容。我认为我没有正确处理输出流,这就是为什么没有任何内容保存到本地Tomcat服务器的本地目录中 有没有人能给我指出正确的方向,或者提供一些关于如何更正代码以便将读取的内容输出到文件中的建议Java 无法将Jar文件的内容写入Tomcat 7.0.22上的本地Servlet,java,tomcat,servlets,jar,fileoutputstream,Java,Tomcat,Servlets,Jar,Fileoutputstream,下午好 我试图以编程方式提取jar文件的内容,并找到了一个代码段,该代码段允许我在本地机器上提取jar文件的内容,而无需使用servlet 现在我知道了代码的工作原理,我正在尝试在本地servlet环境中使用它,特别是Tomcat7.0.22。到目前为止,我有下面的代码,但无法输出jar的内容。我认为我没有正确处理输出流,这就是为什么没有任何内容保存到本地Tomcat服务器的本地目录中 有没有人能给我指出正确的方向,或者提供一些关于如何更正代码以便将读取的内容输出到文件中的建议 import j
import java.io.*;
import java.util.*;
import javax.servlet.*;
@SuppressWarnings("serial")
public class JarExtractor extends HttpServlet {
@SuppressWarnings("rawtypes")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String path = getServletContext().getRealPath("test.jar");
JarFile jar = new JarFile(path);
Enumeration jarEnum = jar.entries();
while (jarEnum.hasMoreElements()) {
JarEntry file = (JarEntry) jarEnum.nextElement();
File f = new File(file.getName());
if (file.isDirectory()) { // if its a directory, create it
f.mkdir();
continue;
}
InputStream in = jar.getInputStream(file); // get the input stream
OutputStream output = new FileOutputStream(f);
while (in.available() > 0) { // write contents of 'is' to 'fos'
output.write(in.read());
}
output.close();
in.close();
}
}
catch(Exception ex)
{
//------
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try
{
doPost(request,response);
}
catch (ServletException e)
{
//
}
catch (IOException e)
{
//
}
}
}
非常感谢任何人能够提供的任何帮助
祝你周末愉快 输出文件还需要基于实际路径或其他已知位置,否则您可能只是在servlet上下文之外根据jar组件的名称写入位置。实际发生了什么?您是否有写入权限访问您尝试写入的任何位置?你知道你在写什么吗?什么都没有发生,当我用println运行代码时,它会一直打印,直到我初始化输出流,然后就什么都没有了。我相信我有写权限,因为我在本地运行Tomcat,并且有一个servlet可以上传和保存工作正常的文件。我现在正在写信给~/tomcat dir/wtpwebapps/APP-NAME。“test.jar”文件位于~/wtpwebapps/APP name中。您的代码没有意义。在我看来,您试图将JAR文件中找到的所有条目写回其原始位置。你到底想实现什么-读取一个现有的JAR,然后…?我想读取一个现有JAR test.JAR的内容,并将该JAR的内容写入磁盘,基本上提取该JAR,但保持文件结构不变。我想我可能把它弄得太多了,以至于它不再有什么意义了。我所要做的就是将已经运行的代码作为servlet使用。您是否也尝试了输出文件的实际路径?