Java 在Domino8.5.3上的OSGi插件中使用org.apache.commons.fileupload.ServletFileUpload

Java 在Domino8.5.3上的OSGi插件中使用org.apache.commons.fileupload.ServletFileUpload,java,eclipse,servlets,classloader,lotus-domino,Java,Eclipse,Servlets,Classloader,Lotus Domino,我有一个扩展javax.servlet.HttpServlet的servlet。我想让it流程文件从多部分表单提交上传到it 当我试图通过向这个servlet发布数据来达到最低限度时。我得到一个类加载器错误,请参见下文。我没有在构建路径中复制jar文件 我有点困惑你有没有看到同样的问题并解决了 相关代码位为: import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskF

我有一个扩展javax.servlet.HttpServlet的servlet。我想让it流程文件从多部分表单提交上传到it

当我试图通过向这个servlet发布数据来达到最低限度时。我得到一个类加载器错误,请参见下文。我没有在构建路径中复制jar文件

我有点困惑你有没有看到同样的问题并解决了

相关代码位为:

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

super.doPost(req, resp);

try{
if (!ServletFileUpload.isMultipartContent(req)) {
             throw new IllegalArgumentException("Request is not multipart, please 'multipart/form-data' enctype for your form.");
}else{
System.out.println("OK");
}
}catch(Exception e){
e.printStackTrace();
}finally{

}

}
错误是这样的:

17/03/14 17:26:引发异常 java.lang.LinkageError:加载约束冲突:loader sun/misc/Launcher$ExtClassLoader@23b423b4之前启动了加载程序org/eclipse/osgi/internal/baseadapter定义的名为javax/servlet/http/HttpServletRequest的不同类型的加载/DefaultClassLoader@6bb06bb 在java.lang.ClassLoader.DefineClassImpling方法中 位于java.lang.ClassLoader.DefineClassLoader.java:275 位于java.security.SecureClassLoader.defineClassSecureClassLoader.java:74 位于java.net.URLClassLoader.defineClassURLClassLoader.java:540 位于java.net.URLClassLoader.defineClassURLClassLoader.java:451 在java.net.URLClassLoader.access$300URLClassLoader.java:79 位于java.net.URLClassLoader$ClassFinder.runURLClassLoader.java:1038 位于java.security.AccessController.doPrivilegedAccessController.java:310 位于java.net.URLClassLoader.findClassURLClassLoader.java:429 位于sun.misc.Launcher$ExtClassLoader.findClassLauncher.java:281 位于java.lang.ClassLoader.LoadClassLoader.java:660 位于java.lang.ClassLoader.LoadClassLoader.java:626 位于org.apache.commons.fileupload.servlet.ServletFileUpload.isMultipartContentServletFileUpload.java:68 在com.jasonhook.test.TestFileUpload.doPostTestFileUpload.java:30 位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:713 位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:806 位于org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.serviceServletManager.java:180 位于org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequestServletRegistration.java:90 位于org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAliasProxyServlet.java:111 位于org.eclipse.equinox.http.servlet.internal.ProxyServlet.serviceProxyServlet.java:59 位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:806 位于com.ibm.domino.xsp.adapter.osgi.OSGIModule.invokeServletOSGIModule.java:165 位于com.ibm.domino.xsp.adapter.osgi.OSGIModule.access$0OSGIModule.java:151 位于com.ibm.domino.xsp.adapter.osgi.OSGIModule$1.invokeServletOSGIModule.java:132 位于com.ibm.domino.xsp.adapter.osgi.AbstractOSGIModule.invokeServletWithNotesContextAbstractOSGIModule.java:179 位于com.ibm.domino.xsp.adapter.osgi.OSGIModule.doServiceOSGIModule.java:126 位于com.ibm.domino.xsp.adapter.osgi.OSGIService.doServiceOSGIService.java:391 位于com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doServiceCDEnvironment.java:341 位于com.ibm.designer.runtime.domino.adapter.LCDEnvironment.serviceLCDEnvironment.java:297
在com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.servicesxspcmdmanager.java:272上,看起来这是一个OSGiservlet。您的包清单如何指定它对javax.servlet类的依赖关系?我建议您将MANIFEST.MF的内容添加到原始问题中。更多:根据堆栈跟踪,我认为您的包加载了错误版本的javax.servlet类,但这只是一种预感。捆绑包清单可能有助于诊断问题。