gpt4 book ai didi

java - 在 linux 上部署时出现 NoSuchMethodError

转载 作者:IT王子 更新时间:2023-10-29 00:18:10 26 4
gpt4 key购买 nike

我有以下从文件中读取的代码:

private static void writeLogs(String filePath, PrintWriter writer)throws ServletException, IOException {

String fullFilePath = AppConfig.getAppDir()+"/auditlogs/"+filePath+".log";
System.out.println("loading log files from --> "+fullFilePath);

BufferedReader br = new BufferedReader(new FileReader(fullFilePath));
try {
StringBuilder sb = new StringBuilder();
String line;
List<String> tmp = new ArrayList<String>();
do {
line = br.readLine();
tmp.add(line);

}while (line != null);
for(int i=tmp.size()-1;i>=0;i--) {
if(tmp.get(i)!=null){
sb.append(tmp.get(i));
sb.append(System.lineSeparator());
}
}
String logs = sb.toString();
writer.write(logs);
} finally {
br.close();
}
}

当我在 Windows 上的 tomcat 服务器上部署时,这按预期工作。当我尝试在 Linux 上执行相同操作时,文件无法读取。在检查 tomcat 日志文件时,我看到:

SEVERE: Servlet.service() for servlet ReadLogsServlet threw exception
java.lang.NoSuchMethodError: java.lang.System.lineSeparator()Ljava/lang/String;
at com.ericsson.ims.web.servlet.ReadLogsServlet.writeLogs(ReadLogsServlet.java:53)
at com.ericsson.ims.web.servlet.ReadLogsServlet.doGet(ReadLogsServlet.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

错误是由于 System.lineSeparator() 而发生的,但是当我检查 javadoc 时,它说:

Returns the system-dependent line separator string. It always returns the same value - the initial value of the system property line.separator.

On UNIX systems, it returns "\n"; on Microsoft Windows systems it returns "\r\n".

谁能解释为什么这不起作用以及如何修复它才能在多个平台上运行?

最佳答案

看来您在 Linux 和 Windows 之间使用的 Java 版本不同。

如你所见in the javadoc , System.lineSeparator() 在 java < 7 中不存在。

所以,如果你想在 java < 7 上获得行分隔符,你必须使用:

System.getProperty("line.separator")

关于java - 在 linux 上部署时出现 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com