Witam,
Jeśli kogoś obrażę banalnym problemem to przepraszam. Jestem początkujący w JSF i swój program pisze w oparciu o tutoriale.
W celu sprawdzenia czy projekt dobrze działa napisałem prosty programik który wyświetli tylko napis na stronie:
- TestClass
@ManagedBean
public class TestClass {
private String testMessage;
public String getTestMessaget() {
return(testMessage);
}
public void setTestMessaget(String testMessage) {
this.testMessage = testMessage;
}
public String showTest() throws IOException {
setTestMessaget(TmpClass.getText());
return("reply_test");
}
}
- TmpClass
public class TmpClass {
public static String getText() throws IOException {
return "jakis tekst";
}
}
- reply_test.xhtml
......
<table border="5" align="center">
<tr><th class="title">Twój test</th></tr>
</table>
<p/>
<img src="./images/money.gif" align="left" hspace="20"/>
<ul>
<li>Test message: #{testClass.testMessaget}</li>
</ul>
</h:body>
</html>
I ten fragment kodu działa poprawnie. Jest prosty i trywialny. Problem pojawia się wtedy, kiedy w metodzie getText() chciałbym pobrać jakąś wartość String przez SNMP i ją zwrócić. W poniższym przykładzie przygotowuje jedynie szkielet do połączenia. Nie pobieram jeszcze wartości i zwracam jakiegoś fakowego Stringa.
public class TmpClass {
public static Snmp snmp;
public static String getText() throws IOException {
TransportMapping transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
snmp.close();
return "jakis tekst";
}
}
Metoda wywala się na konstruktorze DefaultUdpTransportMapping z nastepującym Exceptionem
java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
-Stack Trace
javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
at snmp4j.TestClass.showTest(TestClass.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 20 more
Caused by: java.lang.ClassNotFoundException: org.snmp4j.TransportMapping
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
... 29 more
Dodam tylko, że fragment kodu z łączeniem się i pobieraniem wartości przez SNMP działa i był sprawdzany pod wiersza poleceń. Zależy mi jednak na napisaniu aplikacji webowej, która będzie wstanie wykonywać takie zadania. Czy mogę liczyć na pomoc w zlokalizowaniu błędu? Jak mam to ugryźć?
Pozdrawiam