【问题标题】:Eclipse Google -App -Engine "Will NOT Enhance"Eclipse Google -App -Engine“不会增强”
【发布时间】:2011-04-25 07:37:37
【问题描述】:

第一次日食:

无法摆脱此错误... 已经尝试了谷歌上的所有建议修复..

持久类“类 com.blahb.blahblah.master.UserToken 似乎没有得到增强。您可能需要重新运行增强器并检查输出中的错误。”数据库中没有表,但操作需要它。请检查该类的元数据规范。

List of 500 lines of exceptions...
*Caused by:
javax.jdo.JDOUserException: Persistent class "Class com.blahb.blahblah.master.UserToken does not seem to have been enhanced.  You may want to rerun the enhancer and check for errors in the output." has no table in the database, but the operation requires it. Please check the specification of the MetaData for this class.
    at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:375)
    at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:230)
    at com.gulfnet.gulfstar.master.Master.getUserToken(Master.java:645)
    at org.apache.jsp.top_jsp._jspService(top_jsp.java:68)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet*

我的同事在她的 Windows PC 上也有同样的项目,并且运行良好...

我尝试了三种不同的 PC 的 linux、mac、windows、3 种不同的 eclipse 版本、20 种不同的导入方式、创建新项目等......

是的,.classpath 已更正以反映所有 jar 文件的正确位置。 我已经尝试按照其中一个谷歌博客上的建议将每个类、java、jar 添加到类/构建路径(window -> pref -> google -> orm)什么都没有......

这个该死的“增强器控制台”应该在 Eclipse 中……在哪里? 我正在运行最新的 Eclipse,以及所有的 Google-app-engine 插件..

有什么想法...?任何人..?

谢谢!

【问题讨论】:

    标签: java eclipse google-app-engine


    【解决方案1】:

    我们编辑了 [Project > properties > Google > App Engine > ORM] 页面以删除 src/ 并仅增强了我们类的一个子集 (src/com/vo/.java*、src/com/back/?res/),如下所述: datanucleus enhancer & javaw: "the parameter is incorrect"

    我们还将 Google|App Engine 复制到更短的路径,如下所述对我们有用: http://code.google.com/p/google-web-toolkit/issues/detail?id=4395#c15

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误,在我的情况下,解决方案只是通过评论这一行来使课程不持久:

      @PersistenceCapable(identityType = IdentityType.APPLICATION)
      

      然后运行我的应用程序并收到关于持久性的错误,停止它,取消注释上一行并再次运行应用程序。

      【讨论】:

        【解决方案3】:

        通过添加主键为我解决了这个问题,如下所示:

        @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id;

        【讨论】:

          【解决方案4】:

          右键单击项目,然后单击“属性”>“构建器”。有没有类似“Missing Builder (org.datanucleus.ide.eclipse.enhancerbuilder)”的观点

          如果您创建一个新的 Web 应用程序项目,请确保选中“使用 Google Web Toolkit”和“使用 Google App Engine”,然后在“属性”>“构建器”中再次查看,是否会显示 “增强器” 那里不是“缺少生成器”?

          如果是,那么肯定的解决方案是从头开始创建一个新项目,然后手动将旧项目中的内容转移到新项目中。简单地将旧项目导入另一个 Eclipse 是行不通的,增强器仍然不存在。

          【讨论】:

            【解决方案5】:

            问题在于 DataNucleus 的增强器已从项目的构建器列表中删除。对我来说,所有清理、重建等项目都没有帮助。您需要做的是(1)创建新的示例 GAE 项目,在纯文本编辑器中打开该项目的“.project”文件,从那里复制此文本:

            <buildCommand>
                <name>com.google.appengine.eclipse.core.enhancerbuilder</name>
                <arguments></arguments>
            </buildCommand>
            

            现在将其复制到您自己的 .project 文件中构建器列表的底部。现在 DataNucleus 应该可以正常工作了。我不知道为什么它有时会消失。

            【讨论】:

              【解决方案6】:

              更新到最新版本的 appengine java sdk 为我解决了这个问题。

              【讨论】:

                【解决方案7】:

                更改 SDK 版本对我有用。

                有趣的是,我已经在使用最新版本了。恢复到以前的版本是我触发“增强”步骤的唯一方法。这是一个 gradle 构建脚本。

                【讨论】:

                  猜你喜欢
                  • 2012-08-17
                  • 2013-01-11
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-04-26
                  • 2011-01-22
                  • 2012-06-13
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多