清单文件未被视为/正在工作

时间:2017-09-19 09:21:01

标签: maven intellij-idea jar manifest

这让我疯了,而且我对所有这些maven绒毛几乎没有经验。我已经开始使用我当前的清单文件了。

Manifest-Version: 1.0
Class-Path: /Users/avalin/.m2/repository/org/slf4j/slf4jnop/1.7.25/slf4j-nop-1.7.25.jar 
        /Users/avalin/.m2/repository/org/drools/drools-compiler/7.3.0.Final/drools-compiler-7.3.0.Final.jar 
        /Users/avalin/.m2/repository/org/drools/drools-core/7.3.0.Final/drools-core-7.3.0.Final.jar 
        /Users/avalin/.m2/repository/org/kie/kie-api/7.3.0.Final/kie-api-7.3.0.Final.jar 
        /Users/avalin/.m2/repository/org/kie/kie-internal/7.3.0.Final/kie-internal-7.3.0.Final.jar
Main-Class: org.avalin.optaplanner.main.EmployeeRoster

清单应该正确放在我的resources / META-INF文件夹中, 虽然IntelliJ巧妙地""足够的尝试将其放入java文件夹

但现在我突然得到了这个错误:

Exception in thread "main" java.lang.NullPointerException
    at org.kie.internal.io.ResourceFactory.newByteArrayResource(ResourceFactory.java:66)
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.getResource(AbstractKieModule.java:299)
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:264)
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:259)
    at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:228)
    at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:74)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:251)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:219)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:177)
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildDroolsScoreDirectorFactory(ScoreDirectorFactoryConfig.java:503)
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:331)
    at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:220)
    at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61)
    at org.avalin.optaplanner.main.EmployeeRoster.main(EmployeeRoster.java:31)
Avalins-MacBook-Pro:~ avalin$

我在我的pom中有这个:

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>org.avalin.optaplanner.main.EmployeeRoster</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

但似乎对任何事情都没有任何影响...... 我需要更改清单文件,以便&#34; users / avalin&#34;不是在那里,但它在另一台计算机上的生成方式不同,因为它们显然没有相同的路径......只是让它在第一时间起作用可能是一个很好的开始< / p>

1 个答案:

答案 0 :(得分:0)

所以我结束了#34;修复&#34;它,并通过修复它,我的意思是做一个解决方法。 首先,聪明的&#34;时髦&#34;建造罐子的方式,必须要做,而不是从构建工件看起来合乎逻辑,不,但从右下方有#34; Maven Projects&#34;标签打开

之后,pom中的所有东西都开始生效,我可以制作一个 使用pom分离包含所有依赖项的文件夹(libs),并让maven-jar-plugin使用libs从这个文件夹(libs)中获取这些依赖项

这是我添加的内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.directory}/libs
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>libs/</classpathPrefix>
                        <mainClass>
                            org.avalin.optaplanner.main.EmployeeRoster
                        </mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

现在我的项目也可以在不同的计算机上使用,因为libs文件夹。 .jar文件最终出现在&#34; target&#34;项目内的文件夹

希望这可以帮助那里的人,因为找到关于这个主题的有充分记录的材料似乎不太可能,或者我可能会嘲笑谷歌搜索。无论哪种方式。