清单文件不是 regarded/working
Manifest file not regarded/working
这让我发疯了,我对所有这些行家绒毛几乎没有经验。一开始我已经让它工作了,使用我当前的清单文件。
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 "cleverly" 足以尝试将其放入 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>
但它似乎对任何事情都没有影响......
我需要更改我的清单文件,所以 "users/avalin" 不存在,但它在另一台计算机上生成的方式不同,因为它们显然不会有相同的路径......首先让它工作可能是一个很好的开始
所以我最终 "fixing" 它,通过修复它,我的意思是制定一个解决方法。
首先,intelliJ 的 "funky" 构建 jar 的方式必须完成,不是从看起来合乎逻辑的构建工件,不,而是从右下角打开 "Maven Projects" 选项卡
之后,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 文件最终位于项目
内的 "target" 文件夹中
希望这对外面的人有所帮助,因为要找到关于这个主题的详细记录 material 似乎几乎不可能,否则我可能不擅长谷歌搜索。不管怎样。
这让我发疯了,我对所有这些行家绒毛几乎没有经验。一开始我已经让它工作了,使用我当前的清单文件。
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 "cleverly" 足以尝试将其放入 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>
但它似乎对任何事情都没有影响...... 我需要更改我的清单文件,所以 "users/avalin" 不存在,但它在另一台计算机上生成的方式不同,因为它们显然不会有相同的路径......首先让它工作可能是一个很好的开始
所以我最终 "fixing" 它,通过修复它,我的意思是制定一个解决方法。 首先,intelliJ 的 "funky" 构建 jar 的方式必须完成,不是从看起来合乎逻辑的构建工件,不,而是从右下角打开 "Maven Projects" 选项卡
之后,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 文件最终位于项目
内的 "target" 文件夹中希望这对外面的人有所帮助,因为要找到关于这个主题的详细记录 material 似乎几乎不可能,否则我可能不擅长谷歌搜索。不管怎样。