繁体   English   中英

Eclipse未部署引用的库

[英]Referenced libraries not being deployed by Eclipse

我在Eclipse中设置了一个Google App Engine项目。 我添加了一个根级文件夹来包含我的项目的库。 我将所有这些库添加到项目的构建路径中。 代码编译没有任何错误。 当我运行该项目时,我得到启动错误NoClassDef错误。 当我手动将这些库添加到war目录的lib文件夹时,这些错误消失了。

为什么Eclipse不为我在构建路径上部署库? 我是否需要为Eclipse运行构建脚本? 一个构建脚本,它将我的库复制到war dir的lib文件夹中?

对于标准Java EE项目库,必须位于{web-app} / WEB-INF / lib文件夹下 GAE要求他们也可以使用您的代码上传到引擎。

或者,您可以使用Maven定义依赖关系并部署到GAE

更新:GAE项目遵循标准Java EE项目结构来构建和部署war文件。 惯例是你的lib文件夹在{web-app} / WEB-INF / lib中。 谷歌插件自动生成这样的结构(例如来自插件文档):

MyTestProject
  src/
    log4j.properties
    META-INF/
      jdoconfig.xml
    com/
      mytestproject/
        MyTestProjectServlet.java
  war/  
    index.html
    WEB-INF/
      appengine-web.xml
      web.xml
      logging.properties
      classes/
      lib/
       ...App Engine JARs... 

该插件允许更改“war”目录的位置,但不允许更改库的位置,因为它应遵循Java EE标准。

您可以直接将库添加到war / lib,然后右键单击库以将它们添加到构建路径中。

不知道为什么它不在你的构建路径上部署lib,但我已经使用Eclipse多年,并且总是按照我描述的方式完成它。 然后我只是通过eclipse进行部署,不使用构建脚本。

如果未在同一工作区中开发未添加到lib文件夹的库,我建议在库项目的项目属性中启用“实用程序模块”方面 有时Eclipse不会将jar复制到WEB-INF / lib文件夹中,即使Deployment Assembly和其他所有内容都已正确配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM