因为几天Eclipse插件开始显示此错误。
该项目是基于Maven的App Engine项目,dev-server使用Google Eclipse插件提供的WTP集成启动。
AVVERTENZA:失败了 com.google.appengine.tools.development.DevAppEngineWebAppContext@345541bd {/,C:\ Noovle \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \ Ape_Core}: java.lang.NoClassDefFoundError:com / google / appengine / api / utils / SystemProperty
这是加载服务器时的完整堆栈跟踪
lug 07, 2015 11:43:12 AM java.util.prefs.WindowsPreferences <init>
AVVERTENZA: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
lug 07, 2015 11:43:12 AM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFORMAZIONI: Successfully processed C:\Noovle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Ape_Core\WEB-INF/appengine-web.xml
lug 07, 2015 11:43:12 AM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFORMAZIONI: Successfully processed C:\Noovle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Ape_Core\WEB-INF/web.xml
lug 07, 2015 11:43:13 AM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
INFORMAZIONI: Overwriting system property key 'java.util.logging.config.file', value 'C:\Users\Nicola\.m2\repository\com\google\appengine\appengine-java-sdk\1.9.22\appengine-java-sdk\appengine-java-sdk-1.9.22\config\sdk\logging.properties' with value 'WEB-INF/logging.properties' from 'C:\Noovle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Ape_Core\WEB-INF\appengine-web.xml'
lug 07, 2015 11:43:13 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
lug 07, 2015 11:43:14 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: jetty-6.1.x
lug 07, 2015 11:43:18 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@345541bd{/,C:\Noovle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Ape_Core}: java.lang.NoClassDefFoundError: com/google/appengine/api/utils/SystemProperty
lug 07, 2015 11:43:18 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: failed JettyContainerService$ApiProxyHandler@2b8d9248: java.lang.NoClassDefFoundError: com/google/appengine/api/utils/SystemProperty
lug 07, 2015 11:43:18 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: Error starting handlers
java.lang.NoClassDefFoundError: com/google/appengine/api/utils/SystemProperty
at it.noovle.ape.tools.ToolsEnvironment.getApplicationVersion(ToolsEnvironment.java:26)
经过一些分析后,我发现了问题:发布服务器时(甚至创建了新服务器),lib
中的WEB-INF
文件夹未创建。
我确定这一点,因为如果我从另一个项目中复制lib
文件夹(它们共享相同的库),服务器就会毫无问题地启动。
我尝试了一个干净的开始创建新服务器,并且正如预期的那样lib
文件夹丢失了。
在Eclipse的Error Log
选项卡中,在创建和发布服务器
我还需要澄清一下,如果我使用devserver
maven目标启动项目,则根本没有问题。
我在Eclipse 8上使用Eclipse Mars运行(我的同事有Luna,但显示了相同的问题)。
Google插件的版本为Google Plugin for Eclipse 4.4 3.8.0.v201410302155-rel-r44
。我的另一位同事与Eclipse Luna具有相同版本的插件,并没有显示此问题
有没有办法调试WTP插件的步骤,以了解为什么没有创建lib
文件夹?
这种行为的可能解释是什么?
答案 0 :(得分:1)
在Maven Dependencies
项目属性上解决了Deployment Assembly
个问题