这让我疯了,而且我对所有这些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>
答案 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;项目内的文件夹
希望这可以帮助那里的人,因为找到关于这个主题的有充分记录的材料似乎不太可能,或者我可能会嘲笑谷歌搜索。无论哪种方式。