当我在macOS Sierra上使用Oracle 10.0.1从Maven原型maven-archetype-quickstart
版本1.3创建一个新的IntelliJ 2018.1项目时,我在执行Maven install
时遇到此错误。
[错误]无法在项目h2e2上执行目标org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test(default-test):目标org.apache.maven的执行默认测试。插件:maven-surefire-plugin:2.20.1:测试失败:NullPointerException - > [帮助1]
我在创建新项目后直接运行它。我正在编写 no 代码。我可以运行默认行:
public static void main( String[] args ) { System.out.println( "Hello World!" ); }
...从代码编辑器中单击的上下文菜单中选择Run 'App.main()'
。这很有效,但Maven install
失败了。
在IntelliJ的Maven窗格中执行clean
和install
无法解决问题。
如果我切换IntelliJ File
> Project Structure
> Project
> Project SDK
>从10.0.1到1.8.0_171(并将Project language level
设置为8 - Lambdas, type annotations etc.
),然后Maven install
成功。
[INFO] -------------------------------------------- ----------------------------
[INFO]建立成功
[INFO] -------------------------------------------- ----------------------------
如果我将该设置返回到Java 10,Maven install
将再次失败,并出现相同的错误。
我正在运行外部Maven 3.5.3而不是IntelliJ捆绑的旧版本,没有特别的原因。
基于Java 8的旧版现有项目没有问题。我唯一的问题是尝试使用Java 10创建新的基于Maven的quickstart
项目。
答案 0 :(得分:4)
maven-surefire-plugin
似乎Java 10尚未更新原型。
根据此博文:http://joshlong.com/jl/blogPost/java-10.html,您可以执行以下操作以启动并运行...
....我想使用Java 10,所以我打开了pom.xml文件 将java.version属性值更改为10. Maven surefire 插件打破了下一个构建;它抱怨不能 解析JDK的版本。我重新定义了这个版本 插件版本的属性: 2.21.0。
这里的重要部分是我认为更新到更高版本的surefire,如评论中所述。截至2018-10,current version为2.22.1
。
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
答案 1 :(得分:0)
Answer by Maarten是正确且至关重要的。
10
除了该Answer的解决方案更新版本maven-surefire-plugin
之外,要在Java 10上运行该基于Maven“ Quickstart”原型的项目,您还需要将POM文件更改为,表明Java 10是由编译器使用。
更改此:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
将这对1.7
对替换为10
:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>