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

Intellij Apache Ignite项目不会生成工作JAR文件

井兴怀
2023-03-14

我的Intellij项目在IDE中完美地运行,但任何试图提取有效数据的方法。来自它的jar文件导致了某种错误。我的项目使用Maven、Spring和Apache Ignite。这是我的pom。xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.1.RELEASE</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-gettings-started</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <dependency>
            <groupId>javax.cache</groupId>
            <artifactId>cache-api</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-core</artifactId>
            <version>2.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-spring</artifactId>
            <version>2.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-indexing</artifactId>
            <version>2.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
        </dependency>



    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

</project>

清单:

Manifest-Version: 1.0
Main-Class: server.ServerNodeExample

并且,文件夹结构:

- project
  - .idea
  - out
  - src
    - main
      - java
        - examples
          - ...
        - server
          - ...
      - resources
        - META-INF
          - MANIFEST.MF
    - test
  - target
  - pom.xml

我列出了以下尝试:

1-在pom中运行mvn clean install。xml目录:编译得很好,但我得到的错误是相对于jar文件没有主清单属性。

2-我打开jar文件,那里的清单完全不同:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: evandro.teixeira
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_191

所以我在它后面加了一行:

Main-Class: server.ServerNodeExample

现在我发现自己陷入了这个奇怪的例外:

  :$ java -jar ignite-gettings-started-1.0.0.jar 
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/ignite/IgniteException
  at java.lang.Class.getDeclaredMethods0(Native Method)
  at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
  at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
  at java.lang.Class.getMethod0(Class.java:3018)
  at java.lang.Class.getMethod(Class.java:1784)
  at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
  at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.ignite.IgniteException
  at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 7 more

有什么想法吗?

共有1个答案

薛涛
2023-03-14

如果你想用java-jar运行你的项目,你需要构建一个胖jar。这并不取决于依赖项的性质,只要您有任何依赖项。

你也可以尝试使用Spring Boot,它会为你做一个肥胖的罐子。

我不建议使用Apache Ignite 2.1,因为它已经很旧了,在您确定如何启动项目时,Apache Ignite 2.7应该已经推出了。

 类似资料:
  • 我是Spring boot的新手,我认为这个问题非常基本。 我使用Spring Boot创建了一个应用程序,在开发环境中一切都很好。但当我将jar文件从目标目录复制到另一台机器并运行“java-jar”时,它不会呈现jsp页面,并出现以下错误: 当我将src文件夹从项目根目录复制到同一位置时,它工作正常。 似乎jar文件只是从项目的根目录工作。 这是我的配置: 和我的项目结构: 我在命令行运行以下

  • 根settings.gradle.kts如下所示: 在SoaProject的一个build.gradle.kts文件中,例如,我有以下依赖项: 导入/刷新gradle项目在Intellij中工作,并且依赖项被下载。但是当我尝试从子项目执行gradle任务时,我得到一个未解决的引用版本错误。 向西蒙致意

  • 在使用Netbeans从现有的Alice 3项目创建可运行的jar后,我得到以下错误: 系统属性:组织。爱丽丝。石斑鱼类。未设置根目录 在我看来,一切都安排好了。我正在使用Linux Mint。Java工作正常。其他可运行的jar文件也可以运行。插件匹配。在Netbeans项目属性中,默认VM选项包括以下行: 我不知所措。请帮忙。

  • 我做了一个简单的项目,其中包含一些测试,我希望能够在其他计算机上启动测试。我使用runas构建了这个项目- 错误:在com类中找不到Main方法。实例TestPurchase,请将main方法定义为:publicstaticvoidmain(String[]args)或JavaFX应用程序类必须扩展JavaFX。应用应用 据我所知,TestNG不需要任何主方法,因为有注释。这就引出了一些问题: 我

  • 问题内容: 在这里提出我的问题之后,我现在提出了这个问题。我正在使用NetBeans 8。 我已经创建了一个Maven项目,我们将其命名为MyLibMaven(我使用了New Project-> Maven-> Java Aplication),然后将我的库(我们将其命名为MyLib)移入了该Maven项目。 现在,当我进入常规的Java项目(我们称其为MyProject),并尝试将MyLibMa

  • 我尝试用maven (mvn包)生成一个. zip文件,并希望在zip中也有一个清单文件。jar文件本身确实可以工作。我试图用maven jar插件生成一个清单文件,但它不起作用。我需要做些别的事情来得到一个清单文件吗,或者使用这个插件就足够了?父pom(我展示的父POM的父POM)有maven汇编插件。(我对maven完全陌生) pom.xml父 pom 的文件: pom。模块的xml文件: