我正在努力从我们的网站创建API供我们的客户使用。 我已经将项目导出到 eclipse 中的 JAR 文件。在一个单独的测试项目中,我能够从 JAR 调用具有正确功能的某些方法。
当我启动引用javax.servlet.http.HttpRequestServlet的类(TrackingAction)的新对象时,我遇到了问题。 我收到以下错误
The import javax.servlet.http.HttpServletRequest cannot be resolved
The import javax.servlet.http.HttpSession cannot be resolved
HttpSession cannot be resolved to a type
HttpSession cannot be resolved to a type
这是我尝试开始工作的代码:
import com.myproject.api.data.ShipmentDetail;
import com.myproject.api.data.ShipmentSummary;
import com.myproject.api.service.ShipmentService;
import com.myproject.web.project.action.TrackingAction;
public class Main{
public static void main(String[] args){
ShipmentSummary shipSum = new ShipmentSummary();
ShipmentDetail shipDet = new ShipmentDetail();
TrackingAction trAction = new TrackingAction(); //ERROR COMES FROM THIS LINE
ShipmentService shipServ = trAction.getShipmentService();
List<ShipmentSummary> lss = shipServ.getShipmentSummaryByProNumber("101844564");
List<ShipmentDetail> lsd = shipServ.getShipmentDetail(lss.get(0));
shipDet = lsd.get(0);
shipSum = lss.get(0);
System.out.println("Summary status: " + shipSum.getStatus());
System.out.println("Detail pickup: " + shipDet.getPickupNumber());
}
}
我到处找了,找不到可行的解决方案。 我尝试使用类加载器但没有成功。 我已经尝试过OneJar,但它似乎无法正常工作(除非我做错了什么)。
您正在导入企业Java(Servlet等)的类(从API类中)/即使项目本身不是SE,使用来自旨在SE执行的main()方法的类也是错误的。
Java SE 项目没有:
- javax.servlet.http.HttpServletRequest
- javax.servlet.http.HttpSession
httpsession、servlet 等可用的唯一方式是当你在使用 tomcat(或其他一些 servlet 容器)的 servlet 中运行此代码时。
重构类以:
- 将核心 API 逻辑与依赖于 Java EE servlet 的代码分开
- 重写你的 servlet 方法(例如 doGet() )以引用和使用此 API。
- 创建一个仅包含您的 API 逻辑的 JAR,您的 Java SE 应用程序和 Java Servlet 会引用该逻辑。