【问题标题】:Jira Rest Java Client Dynamic WebApp converted to Maven not working转换为 Maven 的 Jira Rest Java 客户端动态 WebApp 无法正常工作
【发布时间】:2015-07-23 01:26:24
【问题描述】:

我有一个 Jira Rest Java 客户端,它可以完美地作为一个独立的 Java 应用程序运行,但是当我将它与 Tomcat 服务器一起使用以使用 Maven 创建一个动态 Web 应用程序时,它会抛出以下堆栈跟踪

另外,每次我进行修复时,都会抛出一个新的异常。如果有人遇到过此类问题,请帮助我。

java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: com.atlassian.jira.rest.client.api.JiraRestClientFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2918)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at com.atlassian.jira.rest.client.internal.async.AsynchronousHttpClientFactory.createClient(AsynchronousHttpClientFactory.java:53)
at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.create(AsynchronousJiraRestClientFactory.java:35)
at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.createWithBasicHttpAuthentication(AsynchronousJiraRestClientFactory.java:42)
at ReferenceClass.ListOfProjects(ReferenceClass.java:20)
at GetProjectList.doGet(GetProjectList.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我的pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javarticles.webapp</groupId>
<artifactId>webappExample</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>webappExample Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.openengsb.wrapped</groupId>
        <artifactId>jira-rest-java-client-api</artifactId>
        <version>2.0.0-m32.w1</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.openengsb.wrapped</groupId>
        <artifactId>jira-rest-java-client-core</artifactId>
        <version>2.0.0-m32.w1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>

</dependencies>
<build>
    <finalName>webappExample</finalName>
</build>

参考类:

public class ReferenceClass {
    static ArrayList<String> names;
    public static ReferenceClass JInstance= null;
    public static ReferenceClass getInstance(){
        if (JInstance == null) {
            JInstance = new ReferenceClass();
        }
        return JInstance;


    }
    public String ListOfProjects() throws URISyntaxException, IOException {
        String username = "xxxxx";
        String password = "xxxx";
        ArrayList<String> list = null ;
         URI jiraserverURI = new URI("https://jira.xxxxx.com");
         JiraRestClientFactory restClientfactory = new AsynchronousJiraRestClientFactory();
         JiraRestClient Client = restClientfactory.createWithBasicHttpAuthentication(jiraserverURI, username,
                password);

        try {
            Iterable<BasicProject> allproject = Client.getProjectClient().getAllProjects().claim();
            list = new ArrayList<String>();
            for (BasicProject project : allproject) {
                list.add(project.getName());
            }

            System.out.println( "--------" + list);

        } catch (Exception e) {
            System.out.println("Exception found " + e);
        }
        return new Gson().toJson(list);

    }

GetProjectList Servlet

public class GetProjectList extends HttpServlet {
private static final long serialVersionUID = 1L;





/**
 * @see HttpServlet#HttpServlet()
 */
public GetProjectList() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void  doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub


     //ReferenceClass r = new ReferenceClass();
    response.setContentType("application/JSON");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write("Hello Servlet");
    try {
        response.getWriter().write(ReferenceClass.getInstance().ListOfProjects());
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

用它来调用GetProjectList()

    $(document).ready(function() {
    $.getJSON('GetProjectList', function(resp) { // on sucess
        alert("Alert");
    }).fail(function() { // on failure
        alert("Request failed.");
    });
});

【问题讨论】:

  • 您是如何将其作为“standalone Java application”运行的?那时如何包含依赖项?你能检查一下你的.m2文件夹,看看你能不能找到JiraRestClientFactory这个类吗?
  • @TimBiegeleisen 我在 Maven 配置中将它作为独立应用程序运行。当我有一个主类 n ReferenceClass.java 时它运行得很好
  • 你没有回答我的其他问题。你能在.m2 文件夹中找到课程JiraRestClientFactory 吗?
  • 还要检查你的WAR的lib文件夹中的这个类。我敢打赌它不存在。
  • @TimBiegeleisen 我检查了 WAR 文件及其在 lib 文件夹中的存在。我通过在 Eclipse 上安装 maven 并将生成的 .war 重命名为 .jar 来做到这一点。

标签: java eclipse maven tomcat jira-rest-java-api


【解决方案1】:

您的配置看起来不错。该 jar 可在 maven repo 上找到: http://repo1.maven.org/maven2/org/openengsb/wrapped/jira-rest-java-client-api/2.0.0-m32.w1/

您是否运行了“mvn clean package”?它将下载您的所有依赖项,包括错误中缺少的类。

【讨论】:

  • 它确实会下载我需要的所有依赖项。但是当我在服务器上运行它时仍然显示此错误。此外,经过几次修复后,每次我尝试运行它时都会显示不同的 classdefnotfound 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2017-09-23
  • 2018-10-12
  • 2023-04-02
  • 2014-03-13
  • 1970-01-01
相关资源
最近更新 更多