【问题标题】:Grails 2.3.8 Searchable Plugin and MavenGrails 2.3.8 可搜索插件和 Maven
【发布时间】:2014-11-19 14:25:57
【问题描述】:

我有一个简短的问题,有一段时间我正在尝试使用 maven 构建我的应用程序并遇到一些小问题。

首先,我从以下位置更新它:

Grails 1.3.7 -> 2.0 -> 2.1 -> 2.3.8

使用标准的 BuildConfig.groovy,它可以正常工作,并且我的应用运行正常。

现在执行后:

grails create-pom mycompany

并调整 pom 以更多地反映现实,我一直遇到以下错误:

[context.ContextLoader] [错误] [16:00:24] [上下文初始化失败] org.springframework.beans.factory.BeanCreationException:在 ServletContext 资源 [/WEB-INF/applicationContext.xml] 中定义名称为“pluginManager”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.NoClassDefFoundError: Lgrails/plugin/searchable/SearchableService; 在 org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:733) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:233) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1214) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:676) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:455) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90) 在 org.eclipse.jetty.server.Server.doStart(Server.java:261) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 在 org.grails.jetty.JettyServer.startServer(JettyServer.groovy:134) 在 org.grails.jetty.JettyServer.start(JettyServer.groovy:99) 在 _GrailsRun$_run_closure1.doCall(_GrailsRun.groovy:60) 在 RunApp$_run_closure1.doCall(RunApp.groovy:33) 在 org.grails.launcher.GrailsLauncher.launch(GrailsLauncher.java:144) 在 org.grails.maven.plugin.tools.ForkedGrailsRuntime.main(ForkedGrailsRuntime.java:168) 引起:java.lang.NoClassDefFoundError: Lgrails/plugin/searchable/SearchableService; 在 java.lang.Class.privateGetDeclaredFields(Class.java:2348) 在 java.lang.Class.getDeclaredField(Class.java:1916) ... 15 更多 引起:java.lang.ClassNotFoundException:grails.plugin.searchable.SearchableService 在 org.grails.launcher.RootLoader.findClass(RootLoader.java:147) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 org.grails.launcher.RootLoader.loadClass(RootLoader.java:119) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 17 更多

我的 pom 的配置:

构建部分:

<build>
    <pluginManagement/>

    <plugins>
        <!-- Disables the Maven surefire plugin for Grails applications, as we have our own test runner -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
            <executions>
                <execution>
                    <id>surefire-it</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>plugins</directory>
                        <includes>
                            <include>**/*</include>
                        </includes>
                        <followSymlinks>false</followSymlinks>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.grails</groupId>
            <artifactId>grails-maven-plugin</artifactId>
            <version>${grails.version}</version>
            <configuration>
                <!-- Whether for Fork a JVM to run Grails commands -->
                <fork>true</fork>
            </configuration>
            <extensions>true</extensions>

        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>


    </plugins>
</build>    

依赖部分:

<dependencies>

.....

    <dependency>
        <groupId>org.grails.plugins</groupId>
        <artifactId>searchable</artifactId>
        <version>0.6.9</version>
        <type>zip</type>
        <scope>compile</scope>
    </dependency>

....    

</dependencies>

执行 mvn clean install 显示可搜索插件安装成功。

加载 Grails 2.3.8 |配置类路径 |运行预编译脚本 . |环境开始发展 …… |正在安装 zip tinyurl-0.1.zip... ... |安装插件 tinyurl-0.1 ...... |正在安装 zip executor-0.3.zip... ... |安装插件executor-0.3 ...... |正在安装 zip searchable-0.6.9.zip... ... |已安装插件 searchable-0.6.9

感谢您安装 Grails 可搜索插件!

文档可在 ...

可以从 user@grails.codehaus.org 获得帮助

问题和改进应在...提出。

如果您是从以前的版本升级,请参阅...

|正在安装 zip jquery-datatables-1.7.5.zip... ...

|已安装插件 jquery-datatables-1.7.5

...... |正在安装 zip jetty-2.0.3.zip... ...

|已安装插件 jetty-2.0.3 ......

非常感谢您对此的帮助,并在此先感谢!

【问题讨论】:

    标签: java maven grails


    【解决方案1】:

    这是堆栈跟踪中的相关行:

    java.lang.ClassNotFoundException: grails.plugin.searchable.SearchableService
    

    您的 BuildConfig.groovy 中有以下内容吗?

    compile ":searchable:0.6.9"
    

    (根据http://grails.org/plugin/searchable

    【讨论】:

    • 谢谢,但如前所述,它正在使用 maven 并且所有依赖项都在 pom 中定义。
    • 另外:grails run-app 工作没有任何问题,并从 pom 中正确解决依赖关系,而:mvn grails:run-app 失败并出现上述错误。
    • 抱歉,我没有正确阅读您的问题。您确定工件位于 .m2/org/grails/plugins/searchable/0.6.9/ 中并且文件扩展名为 .zip?
    • 显然存在 缺少 zip 类型的问题:jira.grails.org/browse/GRAILS-10943。如果您可以进行一些调试以查看 grails 插件类路径,那就方便了...
    • 遗憾的是所有资源都存在于我的 .m2 目录中。看起来真的是 maven-grails-plugin 本身的问题。
    【解决方案2】:

    好的,这个问题的解决方案原来是将 maven grails 插件更新到 2.4.3,现在一切都在构建。

           <plugin>
                <groupId>org.grails</groupId>
                <artifactId>grails-maven-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <!-- Whether for Fork a JVM to run Grails commands -->
                    <fork>true</fork>
                    <grailsVersion>${grails.version}</grailsVersion>
                </configuration>
                <extensions>true</extensions>
    
            </plugin>
    

    感谢提供帮助

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      相关资源
      最近更新 更多