当前位置: 首页 > 知识库问答 >
问题:

将Spring-project部署到Glassfish(NoClassDefFoundError)

曾宏毅
2023-03-14

我对Java EE7/Spring还是新手,并试图解决以下问题。我使用GlassFish4.1和JDK1.8。

我在Eclipse中创建了一个测试项目(New Project->Spring Project->Simple Java),使用项目方面“Dynamic Web Module”、“Java”、“JavaScript”、“JavaServer Faces”,如下所示:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">

<h:form>
    <h:commandButton value="Submit Query" action="#{bean.login()}"></h:commandButton>
</h:form>
</html>
package springWeb;

import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


@RequestScoped
@Named
public class Bean {

    //@Autowired
    private UserService userService;

    public String login(){
        AnnotationConfigApplicationContext context = 
                new AnnotationConfigApplicationContext(springConfiguration.class);
//      userService = (UserService)context.getBean("UserService");
//      userService.service();
        return "go.jsf";
    }
}

UserServiceImpl

package springWeb;


import org.springframework.stereotype.Component;

//@Component
public class UserServiceImpl implements UserService {

    @Override
    public void service() {
        System.out.println ("Service running...");
    }

}

当按命令按钮时,我收到以下错误:

ServletException:java.lang.noClassDefFounderRorr:org/SpringFramework/context/annotation/annotationConfigApplicationContext

这是什么原因,如何解决?(为了清楚起见,我已经注释掉了依赖注入。)

非常感谢您的帮助!

共有1个答案

翟丰茂
2023-03-14

最后我自己解决了这个问题。原因是我的代码所依赖的类文件在编译时存在,但在运行时却找不到。因此,我不得不将7个缺少的库(如spring-context-4.2.0.release.jar、spring-expression-4.2.0.release.jar、spring-core-4.2.0.release.jar、spring-context-support-4.2.0.release.jar等)复制到以下Glassfish libary-folder中

C:\glassfish-4.1\glassfish4\glassfish\domain\domainxxxx\lib

您可以在网上轻松找到缺少的libaries,例如,在Maven存储库中:http://repo1.Maven.org/maven2/

帮助我理解这一点的相关帖子是:为什么我在Java中得到了一个noClassDefFounderRorr?Java EE 6的Maven与Eclipse项目方面

 类似资料:
  • 我在Docker有个Jenkins集装箱。 当我成功构建某个东西时,我希望将其部署到一个glassfish docker容器中。 https://docs.oracle.com/cd/e19798-01/821-1757/ghgmi/index.html https://github.com/jenkinsci/postbuildscript-plugin

  • 我使用的是NetBeans 8.0.2、JDK1.8和Glassfish 4。我还使用了另一个配置,使用了NB 7.3.1、jdk 1.7和GF 3.1.2和相同的结果。 我正在创建一个新的Java EE项目,只有一个EJB模块。当我尝试部署EJB模块时,我得到以下错误: 这是服务器日志: 我已经证实了这个.罐子是存在的。我找遍了所有地方,也没有找到类似的东西。我能做什么?Netbeans、Jav

  • 我正在尝试将一个简单的web服务部署到GlassFish。以下是web服务类: 任务是一个简单的界面。界面如下: 当我试图通过Netbeans部署web服务时,我得到以下错误:

  • 所以这是我的问题。我正在努力将一个简单的maven应用程序部署到Glassfish服务器中,只是为了检查我的配置是否正确,以便进一步开发。我使用的是NetBeans IDE,但由于它提供的控制台日志很小,几乎无法读取,所以我尝试使用系统终端(我使用的是Fedora)。 我试图部署的应用程序由一个无状态EJB bean(名为DziekanatBean,当前不执行任何操作)和一个Maven POM项目

  • Netbeans和EJB是如何从部署到Glassfish的? Netbeans能够做到这一点,但如何在IDE之外实现这一点呢? 另见: 如果EJB模块依赖于其他一些jar文件,那么部署独立的EJB模块是不起作用的-这些jar文件被忽略并且没有部署到服务器上,这将导致EJB模块的ClassNotFound异常。类似的情况也在AppClient中。 这从来没有起过作用,这个问题从4.x NB早期版本就

  • 所以我对Spring很陌生--所以我想试试Spring Boot 我正在使用一个Maven来构建--我设置了一个视图请求,当我以“app”的形式运行它时,看起来就像它自己启动了tomcat,并且我有一个默认8080端口的服务,所以当我调用时,一切都很好。 然而,当我试图将其打包为WAR部署到服务器时,它不起作用 所以我想我应该回到基础,并将它部署到本地的tomcat服务器上,看看会发生什么 所以首