Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ladowanie klas

0 views
Skip to first unread message

Norboro

unread,
Jun 11, 2001, 8:09:55 AM6/11/01
to
mam aplikacje, technologia jsp. java 1.3.0, korzysta z interbase

kiedy (testuje za pomoca Class.forName()) laduje klase (tzn. interface...)
javax.sql.DataSource nie ma problemow (znaczy sie laduje sie), kiedy jednak
laduje klase interbase.interclient.DataSource (interclient.jar jest w
classpath) mam błąd NoClassDefinition: javax/sql/DataSource (TAK!!!)

dzieje sie tak zarowno pod tomcatem jak i resinem (linux)
na innym kompie (tez linux) chodzi i u mnie na win tez. Java ta sama. Co
moglem niedokonfigurowac? Dlaczego klasa "bezposrednio" sie laduje, a
"posrednio" nie???

Bardzo prosze o pomoc, bo wydaje mi sie, ze wszystko jest "tak samo" na tych
kompach, ale przeciez musialem cos przeoczyc, nie wiem gdzie szukac...

Pozdrawiam,
Norboro

Norboro

unread,
Jun 12, 2001, 9:41:18 AM6/12/01
to
jak dla mnie to bez sensu, jakas magia chyba ;-) spojzcie na fragment kodu:

System.out.println("wejscie do createDataSource(String
resName)");
interbase.interclient.DataSource ds;
System.out.println("1");
javax.sql.DataSource ds2;
System.out.println("2");
try{

System.out.println(Class.forName("javax.sql.DataSource"));
}catch(Exception e) {}
System.out.println("3");
try{ // <-- TAK, TU JEST TRY... ALE NIEWIELE TO POMOZE!!!

System.out.println(Class.forName("interbase.interclient.DataSource"));
}catch(Exception e) {}
System.out.println("4");
ds = new interbase.interclient.DataSource();
System.out.println("5");

------------- i wynik, 4-ka sie juz nie wyswietla pomimo tego, ze jest try{}
(!!!!!!!!) --------------

[EmbeddedTomcat] wejscie do createDataSource(String resName)
[EmbeddedTomcat] 1
[EmbeddedTomcat] 2
[EmbeddedTomcat] interface javax.sql.DataSource
[EmbeddedTomcat] 3
2001-06-12 03:36:25 - Ctx( /webcoliber ): Exception in: R( /webcoliber +
/test.jsp + null) - javax.servlet.ServletException: javax/sql/DataSource
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:399)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.java:286)
at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
at java.lang.Thread.run(Thread.java:484)
Root cause:
java.lang.NoClassDefFoundError: javax/sql/DataSource
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(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:297)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava:446)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava:446)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava:446)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava:446)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava:446)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at com.exell.WebDbBean.createDataSource(WebDbBean.java:45)
at com.exell.WebDbBean.getDataSource(WebDbBean.java:77)
at com.exell.WebDbBean.getConnection(WebDbBean.java:96)
at
_0002ftest_0002ejsptest_jsp_8._jspService(_0002ftest_0002ejsptest_jsp_8.java
:116)
at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.ja
va:177)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.java:286)
at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
at java.lang.Thread.run(Thread.java:484)


Czy ktos ma jakies wytlumaczenie na to? Przecierz tam jest try... i na
dodatek wcale nie krzyczy, ze nie ma interbase.interclient.DataSource. Acha,
gdyby wyremowac to miejsce, to identyczny blad wyskoczy dalej, czyli przy ds
= new interbase.interclient.DataSource();
sama java podobno i tak robi w tym miejscu Class.forName()

pod resinem jest podobnie, tylko, że zamiast:
at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava:446)
jest:
at
com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:238)

Co jest zle? jak na to poradzic?

Pozdrawiam,
Norboro

0 new messages