2012-01-24 3 views
1

Я делаю веб-проект в гобелене, используя сервер причала в Eclipse.Получение этого исключения при развертывании военного файла на сервере tomcat

Он отлично работает во время работы в затмении. но когда я развернул файл войны на сервере Tomcat. Я получаю следующую трассировку стека. пожалуйста, помогите мне

org.apache.tapestry5.ioc.internal.OperationException 
java.lang.ClassNotFoundException: caught an exception while obtaining a class file for net.video.pages.Index 

trace 
Constructing instance of page class net.video.pages.Index 
Creating ComponentAssembler for net.video.pages.Index 

java.lang.ClassNotFoundException 
caught an exception while obtaining a class file for net.video.pages.Index 

exception 
org.apache.tapestry5.ioc.internal.OperationException: javassist.NotFoundException: org.json.JSONException 

org.apache.tapestry5.ioc.internal.OperationException 
javassist.NotFoundException: org.json.JSONException 

trace 
Constructing instance of page class net.video.pages.Index 
Creating ComponentAssembler for net.video.pages.Index 
Transforming component class net.video.pages.Index 

javassist.NotFoundException 
org.json.JSONException 

javassist.ClassPool.get(ClassPool.java:436) 
javassist.ClassPool.get(ClassPool.java:655) 
javassist.CtBehavior.getExceptionTypes(CtBehavior.java:335) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toMethodSignature(InternalClassTransformationImpl.java:1595) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl.access$000(InternalClassTransformationImpl.java:54) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl$TransformMethodImpl.<init>(InternalClassTransformationImpl.java:107) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl.recordMethod(InternalClassTransformationImpl.java:1143) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl.preloadMethods(InternalClassTransformationImpl.java:894) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl.preloadMembers(InternalClassTransformationImpl.java:887) 
    org.apache.tapestry5.internal.services.InternalClassTransformationImpl.<init>(InternalClassTransformationImpl.java:805) 
    org.apache.tapestry5.internal.services.ComponentClassTransformerImpl$1.run(ComponentClassTransformerImpl.java:186) 
    org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50) 
    org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47) 
    org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) 
    org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:46) 
    org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56) 
    org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1058) 
    org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:111) 
    org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:212) 
    javassist.Loader.findClass(Loader.java:340) 
    org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:102) 
    javassist.Loader.loadClass(Loader.java:311) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:305) 
    org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.getInstantiator(ComponentInstantiatorSourceImpl.java:285) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl$4.invoke(PageLoaderImpl.java:222) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl$4.invoke(PageLoaderImpl.java:219) 
    org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) 
    org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) 
    org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl.createAssembler(PageLoaderImpl.java:218) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl.getAssembler(PageLoaderImpl.java:208) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:180) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:174) 
    org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) 
    org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) 
    org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063) 
    org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:173) 
    org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:81) 
    org.apache.tapestry5.internal.services.NonPoolingRequestPageCacheImpl.get(NonPoolingRequestPageCacheImpl.java:74) 
    org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:55) 
    org.apache.tapestry5.services.TapestryModule$36.handle(TapestryModule.java:2326) 
    org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48) 
    org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47) 
    org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45) 
    org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:321) 
    net.snovabits.services.AppModule$1.service(AppModule.java:90) 
    org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) 
    org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:984) 
    org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:974) 
    org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) 
    org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) 
    org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:80) 
    org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) 
    org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) 
    org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:272) 
    org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) 
    org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) 
    org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:928) 
    org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147) 

ответ

1

У меня была аналогичная проблема, когда она работает в eclipse, но при развертывании в tomcat она выдает ошибку. Это может быть связано с тем, что в eclipse вы предоставляете некоторые файлы jar в разных местах и ​​используете его в пути к классу.

Поэтому убедитесь, что все ваши банки доступны в проекте Lib папки

+0

да, вы правы, я использую некоторые из своих файлов jar в другом месте. – FreshBits

0

похоже, что в вашей войне отсутствует библиотека, которая присутствует только в вашей конфигурации затмения.

1

Правильно ли создан ваш файл WAR, включая все ваши скомпилированные классы и необходимые библиотеки под WEB-INF\classes и WEB-INF\lib соответственно?

+0

да некоторые файлы банка в затмении не хватает в войне, но Я не знаю, как добавить эти файлы в войну. и я использую maven для создания файла войны – FreshBits

1

пути к классам погрузчиков дефолтов к классам JVM. Используйте это, чтобы получить путь к классам загрузчика для текущего класса, если он находится в том же банке/месте в классе вы пытаетесь получить экземпляр:

ClassPool pool = ClassPool.getDefault(); 
    ClassClassPath ccpath = new ClassClassPath(this.getClass()); 
    pool.insertClassPath(ccpath); 
    CtClass superClass = pool.get("com.some.TestClass");