繁体   English   中英

将JSP代码从Windows迁移到Linux计算机时出错

[英]Error while migrating JSP code from Windows to Linux machine

我处理了在Windows系统中的Tomcat5.5服务器上运行的JSP代码。

我必须将所有JSP代码复制到linux系统中,当我执行相同的操作时,出现以下错误。

 javax.servlet.ServletException: c:\tmp is not a directory
 Readcsv.init(Readcsv.java:36)
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)


org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
 java.lang.Thread.run(Thread.java:636)

我在Windows系统中修改了没有该c:\\ tmp目录的Java代码,然后重新启动了Tomcat服务器,该工具运行良好。

当我将Windows的修改后的Java代码替换为linux系统时,仍然出现相同的错误。

注意:我正在使用url http://192.168.0.85:8080/CNA/uploadcsv.jsp从Windows访问linux服务器,其中85是linux的系统号。

是否有类似tomcat的东西也必须针对Linux版本重新启动? 如果是这样,该怎么做?

UPDATE

这是我在代码中使用c:\\​​ tmp位置的地方。

public class Readcsv extends HttpServlet {
private static final String TMP_DIR_PATH = "c:\tmp";
private File tmpDir;
private static final String DESTINATION_DIR_PATH ="/files";
private File destinationDir;

public void init(ServletConfig config) throws ServletException {
    super.init(config);
    tmpDir = new File(TMP_DIR_PATH);
    if(!tmpDir.isDirectory()) {
        throw new ServletException(TMP_DIR_PATH + " is not a directory");
    }
    String realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH);
    destinationDir = new File(realPath);
    if(!destinationDir.isDirectory()) {
        throw new ServletException(DESTINATION_DIR_PATH+" is not a directory");
    }

}

我如何找到临时路径的替代品? 目标路径工作正常。 我正是从这个例子中复制了代码

看来您的应用程序尝试读取Linux系统上不存在的“ C:\\ tmp”下的csv文件。

不要在代码中硬编码磁盘文件系统路径。 那只是可移植性和可维护性的麻烦。

如果是临时文件,请使用File#createTempFile()

File tempfile = File.createTempFile("name", ".ext");

无论环境如何,它都会在正确的位置自动创建临时文件。 但是,您也可以通过System.getProperty("java.io.tmpdir");获得tmp目录的根目录位置System.getProperty("java.io.tmpdir");


如果您的应用程序要读取资源,只需将它们放在运行时类路径中或将其路径添加到运行时类路径中即可。 然后,您可以通过ClassClassLoader上的getResource()getResourceAsStream()方法从类路径中获取它们。

InputStream input = getClass().getResourceAsStream("file.properties");

如果确实需要在类路径之外具有固定路径,则可以在属性文件中对其进行定义,以便至少可以对应用程序外部的路径进行任何控制(因此,无需每次都更改代码)。

String path = properties.getProperty("my.file.path");

您说您修改了代码并将其重新部署到Tomcat。

您可能只需要重新启动Tomcat即可获取新代码。 在此之前,它将运行旧代码,并且您将收到相同的错误。

重新启动Tomcat的方式取决于您正在运行的Linux发行版以及安装Tomcat的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM