开发者社区> 问答> 正文

无法初始化主类的原因?

在Eclipse中运行Maven“编译”,“安装”命令以创建可执行JAR并继续运行该JAR之后,出现以下错误

Error: Unable to initialize main class org.example.project.StockTracker`
Caused by: java.lang.NoClassDefFoundError: com/mashape/unirest/http/exceptions/UnirestException

我不知道发生了什么事。我该如何解决?以下是更多详细信息。我用主要类信息更新了POM,并将类路径设置为“ true”。

主要类别代码

package org.example.project;

import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;

public class StockTracker {

    public static void main (String[] args) throws UnirestException, InterruptedException  {
        HttpResponse<String> response = Unirest.get("https://apidojo-yahoo-finance-v1.p.rapidapi.com/market/get-quotes?region=US&lang=en&symbols=TSLA")
                    .header("x-rapidapi-host", "apidojo-yahoo-finance-v1.p.rapidapi.com")
                    .header("x-rapidapi-key", "api-key")
                    .asString();

        //System.out.println(response.getBody());
        System.out.println("response.getBody()");
    }
}

UNIREST例外类别代码

package com.mashape.unirest.http.exceptions;

public class UnirestException extends Exception {

    private static final long serialVersionUID = -3714840499934575734L;

    public UnirestException(Exception e) {
        super(e);
    }

    public UnirestException(String msg) {
        super(msg);
    }

}

JAR中的清单文件

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.6.3
Built-By: Author
Build-Jdk: 13.0.1
Class-Path: unirest-java-1.4.9.jar httpclient-4.5.2.jar httpcore-4.4.4.j
 ar commons-logging-1.2.jar commons-codec-1.9.jar httpasyncclient-4.1.1.
 jar httpcore-nio-4.4.4.jar httpmime-4.5.2.jar json-20160212.jar
Main-Class: org.example.project.StockTracker

问题来源:Stack Overflow

展开
收起
montos 2020-03-22 08:37:27 2190 0
1 条回答
写回答
取消 提交回答
  • 在@IlyaSenko的帮助下,我设法弄清楚了。我需要将我所有的JAR依赖关系都包含在实际的JAR中,而不是简单地在POM文件中声明依赖关系。我通过以下更新了我的POM以实现此目标。

    <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <mainClass>org.example.project.StockTracker</mainClass>
              </manifest>
            </archive>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
    </plugin>
    

    然后使用Maven“ mvn clean compile assembly:single ” 执行以下命令,该命令将所有JAR捆绑到一个可执行JAR中。之后,JAR工作了

    回答来源:Stack Overflow

    2020-03-22 08:38:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载