我试图为一个我目前正在工作的项目制作一个简单的REST API,以简化我每天必须做的任务,当我到达托管它的地方时,我遇到了一个500服务器的错误。查看(tomcat home dir)/logs/localhost.2021-10-22.log中的日志,我发现了这个错误:
22-Oct-2021 21:33:58.974 SEVERE [http-nio-13760-exec-64] org.apache.catalina.core.StandardWrapperValve.invoke Allocate exception for servlet [OrderServlet]
java.lang.ClassNotFoundException: api.OrderServlet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:538)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:519)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:149)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1070)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:788)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
我在这里还有“不存在”的类的代码:
package api;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import data.Order;
public class OrderServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String requestUrl = request.getRequestURI();
String id = requestUrl.substring("cafe/orders/".length());
Order order = Requests.getInstance().getOrder(id);
if (order != null) {
String json = "{\n";
json += "\"id\": " + JSONObject.quote(order.getID()) + ",\n";
json += "\"id\": " + JSONObject.quote(order.getName()) + ",\n";
json += "\"id\": " + JSONObject.quote(String.valueOf(order.getTime())) + ",\n";
//various parameters removed to prevent abuse in the future (I'm looking at you, Dax)
//I'd rather not have a coffee order show up with a comically large amount of creamers in it
json += "};";
response.getOutputStream().println(json);
} else {
//order was not found
response.sendError(404);
}
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse responce) throws IOException, ServletException {
String id = request.getParameter("id");
String name = request.getParameter("name");
int time = Integer.parseInt(request.getParameter("time"));
//various parameters removed
Requests.getInstance().putOrder(new Order(id, name, time, type, //various parameters removed
));
}
}
我检查了这个类是否确实存在,尝试重新构建这些类,将其导入为未编译的文件,并使用web.xml进行处理,并且检查了构建路径中是否没有随机的jre6库(从这里开始)。我没有使用Maven,Tomcat可以很好地加载文档和manager。如何使Tomcat能够识别类?
看起来文件没有从Eclipse中正确导出,这使得它手动修复了这个问题。
Edit:原来问题是我的源文件夹不是Eclipse试图导出的文件夹。进入属性>部署程序集并更改源文件夹修复了它(谢谢@Piotr P Karwasz!)
我有一个问题,log4j没有登录到我的一个文件,我不知道为什么。我有一些运行脚本的代码,脚本可以添加日志记录,日志记录到使用log4j的文件中,我正在尝试创建一个只记录特定脚本的appender。 上面的appender可以工作,我在日志文件中得到了它 当脚本记录某些内容时,它会以这将使用my log4j中的上述配置显示在日志中。属性文件。 如果我将上述内容更改为: 文件中未记录任何内容。我本以为
我使用库Jaudiotagger创建了一个java类,它运行起来没有问题。然后我用它做了一个罐子,得到了noclassdefounderror。事情是这样的: 然后创建了清单和jar文件。 我得到了以下输出: 然后我运行jar文件,得到“A Java Exception has currence.”。我也试过: 我使用的是Windows8和最新的java(1.7.0_17)。
问题内容: 文件孔是文件中的空白空间,但是不占用任何磁盘空间,并且包含空字节。因此,文件大小大于其在磁盘上的实际大小。 但是,我不知道如何创建带有文件孔的文件进行试验。 问题答案: 将命令与参数一起使用。 这会为您创建一个从字节8192到字节28671的漏洞。 这是一个示例,说明该文件确实存在漏洞(该命令告诉您文件正在使用多少磁盘块): 如您所见,带孔的文件尽管大小相同,但占用的磁盘块较少。 如果
我刚刚开始研究apache camel(使用蓝图路线),我已经被卡住了。 我需要处理一组不同格式的csv文件。我有5个文件,foo_X_X指定csv文件的类型,文件有日期戳。这些文件可能很大,所以一旦写入所有文件,就会写入一个“完成”文件。完成的文件名为foo_trigger_20160110.csv. 我在文件中看到了doneFileName选项,但它只支持静态名称(我在文件名中有一个日期),或
问题内容: http://www.mkyong.com/webservices/jax-rs/file-upload-example-in- jersey/ 我正在遵循本指南并遇到问题。我有一些问题。 是否所有依赖项都必须对应?我的项目有一些org.glassfish.jersey依赖项,本指南建议使用org.sun.jersey。我是否也必须使用相同的版本进行更改? 我有这个错误 这是我的网络服
我有一个目录,它是在执行应用程序后创建的。在使用应用程序的过程中,它充满了一些图片,这些图片是ComboBox的ItemsSource。在关闭应用程序之前,我试图通过设置new()或NULL来清除ItemsSource并删除该目录。如果目录为空,则会正常删除。但除此之外——什么都没有发生,也没有例外。我做错了什么? 创建目录并将路径值分配给“FeedBackScreenshotsPath” 删除