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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur fügen Sie die folgenden jar-Dateien nur im Verzeichnis WEB-INF/lib. Entfernen Sie alle zugehörigen Gläser, wenn Sie nicht haben müssen.
Wenn Sie dont haben diese Gläser dann laden Sie es.
Hier org.apache.struts2.dispatcher.FilterDispatcher ist jetzt veraltet .So Bearbeiten Sie Ihre web.xml von
zu
Ich denke, das könnte die Arbeit für Sie tun.
InformationsquelleAutor arvin_codeHunk
Scheint es die version von xwork-core-jar, die Sie verwenden, ist nicht kompatibel mit den Versionen der anderen Gläser.
Versuchen Sie es mit xwork-2.1.2.jar. Ich habe es vorhin erfolgreich.
Wenn es dann immer noch nicht funktioniert, werden Sie sicher, dass Sie die gleichen Versionen von jedem und jedes Glas wie in der Beispiel-Anwendung.
BEARBEITEN:
Gemäß Ihrem code zu ändern versuchen
zu
Es scheint, dass, da Sie nicht als setter, Streben ist die Suche für den Namen der Eigenschaft in der Sitzung.
Bearbeiten Sie die Frage zum hinzufügen von code aus struts.xml, Ansicht.jsp, action-Klasse. Dann werden wir in der Lage sein zu sagen.
was ist die minimal erforderliche Gläser für struts2 zu arbeiten?
Da Sie versuchen, verwenden Sie die neueste version von Struts, könnte es Abhängigkeitsprobleme. Neu anfangen als versuchen Sie, diese app: dzone.com/tutorials/java/struts-2/struts-2-example/...
Gefolgt, die D-Zone Beispiel und in meinem tomcat-logs bekomme ich noch eine Fehlermeldung:
code
java.lang.ClassNotFoundException: org.apache.struts2.interceptor.SessionAwareInformationsquelleAutor TechSpellBound
Bezüglich deiner Frage, könnte das problem in der server-oder im IDE-tool, damit reinigen Sie beide unter Projekt sauber und unter server reinigen jeweils.
Wenn du das gleiche problem wieder laden struts2 von diesem link
also, wie hast du das Problem beheben lulu88?
InformationsquelleAutor Raki
Kein classdeffound Fehler tritt in der Regel, wenn Sie nicht haben, dass die Klasse im classpath, oder es gibt mehr als one-Versionen, die Klasse im classpath. Beheben Sie mit Hilfe dieser beiden Optionen Sie sind es. Ich habe festgestellt, wenn ich arbeiten war auf meinem JSP-Beispiele für code-Beispiele.
InformationsquelleAutor Deepak