2013-05-03 4 views
-1

Я разработал веб-приложение в Tomcat ранее, и у меня были некоторые файлы jar в моем каталоге tomcat/lib. Теперь я пытаюсь запустить мое приложение на сервере weblogic, поэтому я установил weblogic 10.3.6, создал домен веб-журнала и развернул мое приложение. Я скопировал банку файлы, которые я разместил ранее в tomcat/lib ниже директории Lib:Исключение NoClassDefFoundError в weblogic

Middleware/user_projects/domains/my_domain/lib/ 

Я считаю, что Lib каталог должен быть в классе-пути, но когда я получить доступ к файлу класса в моем веб-приложение, я получаю ниже ошибки:

Caused by: java.lang.NoClassDefFoundError: com/sample/TestManager 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:295) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179) 
     at weblogic.utils.classloaders.FilteringClassLoader.findClass(FilteringClassLoader.java:101) 
     at weblogic.utils.classloaders.FilteringClassLoader.loadClass(FilteringClassLoader.java:86) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:295) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:295) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179) 
     at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:171) 
+0

com/sample/TestManager - это класс, который находится в одной из банок, которые вы скопировали в Middleware/user_projects/domains/my_domain/lib /? – Cris

+0

Перейдите на вкладку запуска сервера для сервера и вручную добавьте его в путь к классам, чтобы узнать, устраняет ли это проблему. –

ответ

0

Я хотел попросить разъяснений, но я новичок, и stackoverflow не позволяет мне просить разъяснений. Поэтому я отправляю в качестве ответа

Когда вы помещаете что-то в DOMAIN_HOME/lib, помните, что JARS в не будет добавляться к пути к системе/серверу. Создатель классов, который создается, является дочерним элементом загрузчика классов system/server.

Таким образом, любые классы, которые в баночках в каталоге/DOMAIN_HOME Lib будет виден только для приложений, таких как ВОЙНЫ, Уши и т.д.

Рассмотрим это:

  • если ваша война/класс ухо package1.A
  • если система/сервер имеет путь к классам банку файл, содержащий package2.B
  • если DOMAIN_HOME/Библиотека имеет банку файл, содержащий package3.C

И если вы ссылаетесь:
а) package2.B из package1.A
б) package3.C из package2.B


, то «а» будет проходить, но «Ъ» потерпит неудачу с подобной ошибкой что вы получаете.