Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT文件上传器HTTP错误:404_Java_Google App Engine_Gwt - Fatal编程技术网

Java GWT文件上传器HTTP错误:404

Java GWT文件上传器HTTP错误:404,java,google-app-engine,gwt,Java,Google App Engine,Gwt,我一直有HTTP错误:404_访问/Gwtuploader.html时出现问题。原因:\未找到 在开发模式下运行应用程序时。我打算稍后上传到谷歌appengine 我的控制台显示以下内容: Initializing App Engine server Aug 05, 2014 12:13:16 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml INFO: Successfully

我一直有HTTP错误:404_访问/Gwtuploader.html时出现问题。原因:\未找到 在开发模式下运行应用程序时。我打算稍后上传到谷歌appengine

我的控制台显示以下内容:

    Initializing App Engine server
Aug 05, 2014 12:13:16 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed C:\Users\user\workspace\gwtuploader\war\WEB-INF/appengine-web.xml
Aug 05, 2014 12:13:16 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed C:\Users\user\workspace\gwtuploader\war\WEB-INF/web.xml
Aug 05, 2014 12:13:16 PM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
INFO: Overwriting system property key 'java.util.logging.config.file', value 'C:\Dev\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.7\appengine-java-sdk-1.9.7\config\sdk\logging.properties' with value 'WEB-INF/logging.properties' from 'C:\Users\user\workspace\gwtuploader\war\WEB-INF\appengine-web.xml'
Aug 05, 2014 12:13:16 PM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Aug 05, 2014 12:13:16 PM com.google.apphosting.utils.jetty.JettyLogger info
INFO: jetty-6.1.x
Aug 05, 2014 12:13:17 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed uploadServlet: java.lang.NoClassDefFoundError: javax/servlet/Servlet
Aug 05, 2014 12:13:17 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@2f81fbd2{/,C:\Users\user\workspace\gwtuploader\war}: java.lang.NoClassDefFoundError: javax/servlet/Servlet
Aug 05, 2014 12:13:17 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed JettyContainerService$ApiProxyHandler@6907e6cb: java.lang.NoClassDefFoundError: javax/servlet/Servlet
Aug 05, 2014 12:13:17 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Error starting handlers
java.lang.NoClassDefFoundError: javax/servlet/Servlet
    at java.lang.ClassLoader.findBootstrapClass(Native Method)
    at java.lang.ClassLoader.findBootstrapClassOrNull(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at com.google.appengine.tools.development.DevAppServerClassLoader.loadClass(DevAppServerClassLoader.java:92)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:175)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:216)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.mortbay.util.Loader.loadClass(Loader.java:91)
    at org.mortbay.util.Loader.loadClass(Loader.java:71)
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:254)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:288)
    at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
    at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:87)
    at com.google.appengine.tools.development.Modules.startup(Modules.java:105)
    at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:258)
    at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:213)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:211)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:211)
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:522)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1104)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:844)
    at com.google.gwt.dev.DevMode.main(DevMode.java:322)

Aug 05, 2014 12:13:17 PM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Started SelectChannelConnector@0.0.0.0:8888
Aug 05, 2014 12:13:17 PM com.google.appengine.tools.development.AbstractModule startup
INFO: Module instance default is running at http://localhost:8888/
Aug 05, 2014 12:13:17 PM com.google.appengine.tools.development.AbstractModule startup
INFO: The admin console is running at http://localhost:8888/_ah/admin
Aug 05, 2014 12:13:17 PM com.google.appengine.tools.development.DevAppServerImpl doStart
INFO: Dev App Server is now running
我的档案如下:

uLoaderServlet.java文件

package gwtuploader.mygwt.server;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Hashtable;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import gwtupload.server.UploadAction;
import gwtupload.server.exceptions.UploadActionException;
import gwtupload.shared.UConsts;

public class uploaderservlet extends UploadAction {

    private static final long serialVersionUID = 1L;

      Hashtable<String, String> receivedContentTypes = new Hashtable<String, String>();


      Hashtable<String, File> receivedFiles = new Hashtable<String, File>();


      public String executeAction(HttpServletRequest request, List<FileItem> sessionFiles) throws UploadActionException {
            String response = "";
            for (FileItem item : sessionFiles) {
              if (false == item.isFormField()) {
                try {
                  /// Create a new file based on the remote file name in the client
                  // String saveName = item.getName().replaceAll("[\\\\/><\\|\\s\"'{}()\\[\\]]+", "_");
                  // File file =new File("/tmp/" + saveName);

                  /// Create a temporary file placed in /tmp (only works in unix)
                  // File file = File.createTempFile("upload-", ".bin", new File("/tmp"));

                  /// Create a temporary file placed in the default system temp folder
                  File file = File.createTempFile("upload-", ".bin");
                  item.write(file);

                  /// Save a list with the received files
                  receivedFiles.put(item.getFieldName(), file);
                  receivedContentTypes.put(item.getFieldName(), item.getContentType());

                  /// Send a customized message to the client.
                  response += "File saved as " + file.getAbsolutePath();

                } catch (Exception e) {
                  throw new UploadActionException(e);
                }
              }
            }

            /// Remove files from session because we have a copy of them
            removeSessionFileItems(request);

            /// Send your customized message to the client.
            return response;
          }

          /**
           * Get the content of an uploaded file.
           */
          @Override
          public void getUploadedFile(HttpServletRequest request, HttpServletResponse response) throws IOException {
            String fieldName = request.getParameter(UConsts.PARAM_SHOW);
            File f = receivedFiles.get(fieldName);
            if (f != null) {
              response.setContentType(receivedContentTypes.get(fieldName));
              FileInputStream is = new FileInputStream(f);
              copyFromInputStreamToOutputStream(is, response.getOutputStream());
            } else {
              renderXmlResponse(request, response,ERROR_ITEM_NOT_FOUND);
           }
          }

          /**
           * Remove a file when the user sends a delete request.
           */
          @Override
          public void removeItem(HttpServletRequest request, String fieldName)  throws UploadActionException {
            File file = receivedFiles.get(fieldName);
            receivedFiles.remove(fieldName);
            receivedContentTypes.remove(fieldName);
            if (file != null) {
              file.delete();
            }
          }}
web.xml文件

package gwtuploader.mygwt.client;

import gwtupload.client.IFileInput.FileInputType;
import gwtupload.client.IUploadStatus.Status;
import gwtupload.client.IUploader;
import gwtupload.client.IUploader.OnFinishUploaderHandler;
import gwtupload.client.ModalUploadStatus;
import gwtupload.client.SingleUploader;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.RootPanel;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class Gwtuploader implements EntryPoint {


    Button dou = new Button("Do Upload");

    FlowPanel flow = new FlowPanel();

    @Override
    public void onModuleLoad() {

        SingleUploader uploader = new SingleUploader(FileInputType.LABEL, new ModalUploadStatus(), dou);
        //uploader.setServletPath("dou.file");
        flow.add(uploader);
        RootPanel.get().add(flow);
        uploader.addOnFinishUploadHandler(new uploaderOnFinishUploaderHandler());

    }


    private class uploaderOnFinishUploaderHandler implements OnFinishUploaderHandler{

        @Override
        public void onFinish(IUploader uploader) {
             if (uploader.getStatus() == Status.SUCCESS) {
                  Window.alert("Server response: \n" + uploader.getServerResponse());
                  uploader.reset();     
             }
        }

    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee">

  <!-- Servlets -->

  <context-param>
    <!-- max size of the upload request -->
    <param-name>maxSize</param-name>
    <param-value>3145728</param-value>
  </context-param>
  <context-param>
    <!-- Useful in development mode to slow down the uploads in fast networks.
         Put the number of milliseconds to sleep in each block received in the server.
         false or 0, means don't use slow uploads  -->
    <param-name>slowUploads</param-name>
    <param-value>200</param-value>
  </context-param>

  <servlet>
    <servlet-name>uploadServlet</servlet-name>
    <servlet-class>gwtuploader.mygwt.server.uploaderservlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>uploadServlet</servlet-name>
    <url-pattern>*.gupld</url-pattern>
  </servlet-mapping>

  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>Gwtuploader.html</welcome-file>
  </welcome-file-list>

</web-app>

最大尺寸
3145728
懒虫
200
上传servlet
gwtuploader.mygwt.server.uploaderservlet
上传servlet
*古普尔德先生
Gwtuploader.html
最后是GWTuploader.gwt.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!--
  When updating your version of GWT, you should also update this DTD reference,
  so that your app can take advantage of the latest GWT module capabilities.
-->
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.6.0//EN"
  "http://google-web-toolkit.googlecode.com/svn/tags/2.6.0/distro-source/core/src/gwt-module.dtd">
<module rename-to='gwtuploader'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name='com.google.gwt.user.User'/>

  <!-- Inherit the default GWT style sheet.  You can change       -->
  <!-- the theme of your GWT application by uncommenting          -->
  <!-- any one of the following lines.                            -->
  <inherits name='com.google.gwt.user.theme.clean.Clean'/>
  <!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
  <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->

  <!-- Other module inherits                                      -->

  <inherits name="gwtupload.GWTUpload"/>
  <!-- Load dinamically predefined styles in the library when the application starts -->
  <stylesheet src="Upload.css"/>

  <!-- Specify the app entry point class.                         -->
  <entry-point class='gwtuploader.mygwt.client.Gwtuploader'/>

  <!-- Specify the paths for translatable code                    -->
  <source path='client'/>
  <source path='shared'/>

  <!-- allow Super Dev Mode -->
  <add-linker name="xsiframe"/>
</module>


war目录中是否有Gwtuploader.html?您是如何从eclipse运行它的?是的,我是从eclipse运行的,war目录中有Gwtuploader.html文件您的类路径中有gwt-servlet.jar吗?我已经下载了gwt-servlet/gwt-servlet-2.2.0.jar,但仍然给出了相同的错误。。。是否确定gwt uploader与google appengine一起工作?是否可能是由我的eclipse EE引起的??我应该下载标准开普勒吗??