2014-02-23 85 views
0

我想学习如何使用GAE,我想在我的项目中使用gson。如何将JAR依赖添加到Java Google App Engine项目?

我正在使用intellij和建筑使用蚂蚁(因为intellij似乎不喜欢建设GAE项目)。我已经成功构建,但现在我想使用gson。的IntelliJ识别进口,但是当我尝试建立我从蚂蚁出现以下错误:

“错误:包com.google.gson不存在”

我Google这个问题,并建议说,把jar到我已经完成的WEB-INF/lib中。但我仍然得到错误。我也尝试使用maven依赖,但面临同样的问题。

我正在使用sdk/demos/template中提供的ant构建脚本。也许我需要改变那里的东西?

编辑 我设法让它工作到最后,ant文件不包括WEB-INF构建文件夹。这里是蚂蚁的新的编译任务,我希望它可以帮助别人:)

<target name="compile" 
     description="Compile the application servlet code"> 
<mkdir dir="${war.dir}/WEB-INF/classes"/> 
<mkdir dir="${war.dir}/WEB-INF/lib"/> 
<javac srcdir="src" destdir="${war.dir}/WEB-INF/classes"> 
    <classpath> 
    <fileset dir="${appengine.sdk}/lib/user"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="${appengine.sdk}/lib/shared"> 
     <include name="*.jar"/> 
    </fileset> 
     <fileset dir="src/WEB-INF/lib"> 
      <include name="*.jar"/> 
     </fileset> 
    </classpath> 
</javac> 
<copy todir="${war.dir}/WEB-INF/lib" 
     flatten="true"> 
    <fileset dir="${appengine.sdk}/lib/user"> 
    <include name="**/*.jar" /> 
    </fileset> 
    <fileset dir="src/WEB-INF/lib"> 
     <include name="*.jar" /> 
    </fileset> 
</copy> 

+0

是的,我清理并试图编译。我正在使用ant来构建,所以ant clean,ant compile或ant runserver – serenskye

+0

我只是读了ant build脚本,而且我无法看到它使用WEB-INF/lib进行任何操作 – serenskye

+0

错误不是intellij基于,我使用蚂蚁通过命令行 – serenskye

回答

2

你需要WEB_INF/lib目录添加到您的构建路径specified by the doc

<path id="project.classpath"> 
    <pathelement path="war/WEB-INF/classes" /> 
    <fileset dir="war/WEB-INF/lib"> 
     <include name="**/*.jar" /> 
    </fileset> 
    <fileset dir="${sdk.dir}/lib"> 
     <include name="shared/**/*.jar" /> 
    </fileset> 
    </path> 

如果你不是完全依附于Intellij,我使用Eclipse plugin for GAE真的很好运。 (我知道;开关IDE“S ...)

+0

嗨,这并没有工作,但它让我在正确的轨道上 – serenskye

1

你所做的是一个黑客位的理想情况下,你应该做到以下几点:

  • 创建旁边有一个第三方目录(不是。在你的战争目录中,应该没有必要在src/WEB-INF/lib中有一个重复的WEB-INF目录
  • 将你的Gson.jar添加到该目录并从此处对其进行源代码管理
  • 打开项目结构 - >库 - >新建项目库 - >从Java
  • 选择您的jar(或第三方目录本身可能工作)。
  • 转到模块 - > Dependencies->添加库,并选择新库
  • 转到Artifacts->输出布局
  • 如果库尚未在右窗格中,不要添加库文件,并选择新库
  • 你应该能够只需双击在右窗格中单击该库
  • 这将导致在库显示在左侧窗格中的“<library name>(项目库)”下的WEB-INF/lib目录/

A LSO验证

  • 你Artifacts->输出布局 - >类型的Web应用程序:爆炸
  • 你Artifacts->输出布局 - >输出目录你的战争目录
  • 项目 - >编译器的输出是你的/ war/WEB-INF/classes dir

这样做会导致IntelliJ在构建时将Gson.jar移动到WEB-INF/lib目录。它还应该允许你在IntelliJ中构建你的项目,而不需要在IDE之外运行ant。如果您有任何问题或需要其他帮助,请告知我们。过去几个月我一直在处理这些问题。

相关问题