我正在尝试学习如何使用GAE,我想在我的项目中使用gson。
我正在使用intellij并使用ant构建(因为intellij似乎不喜欢构建GAE项目)。我已经成功构建,但现在我想使用gson。 Intellij识别导入,但是当我尝试构建时,我从ant获得以下错误:
“错误:包com.google.gson不存在”
我用Google搜索了这个问题,并建议将jar放入我已经完成的WEB-INF / lib中。但我仍然得到错误。我也试过使用maven依赖,但面临同样的问题。
我正在使用sdk / demos / template中提供的ant构建脚本。也许我需要在那里改变一些东西?
EDIT 我设法让它最终工作,ant文件不包括WEB-INF构建文件夹。这是ant中的新编译任务,我希望它可以帮助某人:)
<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 :(得分: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 ...”
答案 1 :(得分:1)
你所做的是一点点黑客攻击。理想情况下,您应该执行以下操作:
<library name>
(项目库)”
同时验证
这样做会导致IntelliJ在构建时将Gson.jar移动到WEB-INF / lib目录。它还应该允许您在IntelliJ中构建项目,而无需在IDE之外运行ant。如果您有任何疑问或需要其他帮助,请与我们联系。我在过去的几个月里一直在与这些问题作斗争。