Struts2 Hello World jsp-Beispiel-Fehler

Ich versuche zu laufen "Hello World" Struts2-Projekt im Tomcat 6.

Ich immer:

  root cause: java.lang.ClassNotFoundException: org.apache.struts2.interceptor.SessionAware

  java.lang.NoClassDefFoundError: org/apache/struts2/interceptor/SessionAware
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1374)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:138)
    at com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:398)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:355)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:460)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:265)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:189)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)

Aber ich habe die nötige Gläser für struts2 in das WEB-INF/lib-Ordner für das Projekt.

Gläser:

struts-core
xwork
ognl
freemarker
commons-fileupload
commons-io
commons-lang

Irgendwelche Ideen?

Folgte ich einem online-Struts2 HelloWorld-Beispiel:

HelloWorld.action-Klasse:

  package za.co.vine.tutorialspoint.struts2;

  public class HelloWorldAction{
  private String name;

  public String execute() throws Exception {
  return "success";
  }

  public String getName() {
  return name;
  }

  public void setName(String name) {
  this.name = name;
  }
  }

HelloWorld.jsp:

  <%@ page contentType="text/html; charset=UTF-8" %>
  <%@ taglib prefix="s" uri="/struts-tags" %>
  <html>
  <head>
  <title>Hello World</title>
  </head>
  <body>
     Hello World, <s:property value="name"/>
  </body>
  </html>

index.jsp:

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
  <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
  "http://www.w3.org/TR/html4/loose.dtd">
  <html>
  <head>
  <title>Hello World</title>
  </head>
  <body>
     <h1>Hello World From Struts2</h1>
      <form action="hello">
        <label for="name">Please enter your name</label><br/>
        <input type="text" name="name"/>
        <input type="submit" value="Say Hello"/>
     </form>
  </body>
  </html>

struts.xml:

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
   <struts>
    <constant name="struts.devMode" value="true" />
    <package name="helloworld" extends="struts-default">

     <action name="hello" 
        class="za.co.vine.tutorialspoint.struts2.HelloWorldAction" 
        method="execute">
        <result name="success">/HelloWorld.jsp</result>
     </action>
  </package>
  </struts>

web.xml:

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

  <display-name>Struts 2</display-name>
  <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>
     org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
  </filter>

  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
öffnen Sie Ihre core-jar und überprüfen Sie, ob diese Klasse : org.apache.struts2.interceptor.SessionAware vorhanden ist, in das Glas oder nicht , oder laden Sie die jar von mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/struts/...
Die volle stack-trace des Fehlers.
Okay, ich befestigte den oben genannten Fehler bekomme ich jetzt das: java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider(Lcom/opensymphony/xwork2/config/ConfigurationProvider;)V
Nicht mix-and-match-jar-Versionen; die version verwenden, die entsprechend Ihrer S2-version. Ohne die Angabe einer versions-info für die Gläser, ist es unmöglich, genauer zu sein. Überlegen Sie auch, mit Maven/etc. um dies zu umgehen.
Sie können immer mit maven einrichten einer spike-Projekt für eine bestimmte Technologie. Es ist eine sehr niedrige bar für die Einreise und ermöglicht es Ihnen, genau zu bestimmen, genau die Abhängigkeiten für das Projekt im geringsten Fall.

InformationsquelleAutor lulu88 | 2013-01-11

Schreibe einen Kommentar