相关疑难解决方法(0)

Maven Run项目

是否有Maven"阶段"或"目标"来简单地执行Java类的主要方法?我有一个项目,我想通过简单地执行像"mvn run"这样的操作来手动测试.

java maven

215
推荐指数
5
解决办法
14万
查看次数

如何从项目级别指定 --add-opens 并确保无论以何种方式运行我的应用程序都将其考虑在内?

--add-opens我最近迁移到 Java 17,由于运行应用程序时的一个依赖项,它带来了一些限制,要求我使用。

我需要在java -jar运行命令时添加它。现在我找到了这些解决方案:

  • 我可以将其添加到运行该项目的 Dockerfile 中的命令行参数中
java --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED -jar my.jar
Run Code Online (Sandbox Code Playgroud)
  • 我可以通过我的 Maven 将它添加到我的 MANIFEST.MF 中pom.xml
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifestEntries>
                <Add-Opens>java.base/sun.util.calendar java.base/java.util</Add-Opens>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

显然,两者都适合生产。然而,当通过 IntelliJ 运行我的应用程序时,它没有选择我认为是正常的选项。我必须将它们设置在我的运行配置中(顺便说一下,它也提交给我的项目)作为虚拟机参数。

我正在寻找一种方法来自动确保一致性,而不必在我声明附加打开的两个地方并行维护。

编辑:我想知道 argfiles 是否可行。就像我的项目中有一个 argfile 一样,它将在 jar 中引用,并且可以在 y 运行配置中引用。我还没有找到太多证据,但这就是我目前正在追求的道路。

编辑2:我addopens在项目的根目录添加了一个文件,现在可以从我需要它的各个点引用它。对于测试,我添加了这个,并且它与 IntelliJ 测试和 Maven 测试一起开箱即用:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!-- This adds the options contained in the addopens file to the test JVM arguments -->
        <argLine>@addopens @{argLine}</argLine>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我还可以将该addopens …

java intellij-idea maven java-platform-module-system

19
推荐指数
2
解决办法
4万
查看次数

使用IntelliJ IDEA运行Maven项目

我是IntelliJ IDEA的新手,我想使用它运行一个简单的Maven Quickstart项目.

我按照所有说明操作,项目成功完成.但是当我尝试编译并运行它时,Run按钮不会被激活.

看起来IntelliJ IDEA无法弄清楚主类的位置.

这是项目层次结构的图片.

在此输入图像描述

问题是什么 ?我该如何解决?

谢谢 !

java intellij-idea maven

16
推荐指数
2
解决办法
4万
查看次数

MapDB ClassNotFoundException:kotlin.jvm.internal.Intrinsics

我试图运行一个简单的mapdb示例,但得到错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
    at org.mapdb.DBMaker.fileDB(DBMaker.kt)
    at leechies.Truc.main(Truc.java:9)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more
Run Code Online (Sandbox Code Playgroud)

我的课:

package leechies;
import java.util.concurrent.ConcurrentMap;

import org.mapdb.DB;
import org.mapdb.DBMaker;

public class Truc {
    public static void main(String[] args) {
        DB db = DBMaker.fileDB("file.db").make();
        ConcurrentMap map = db.hashMap("map").createOrOpen();
        map.put("something", "here");
        db.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的pomx.xml

<dependencies>
    <dependency>
        <groupId>org.mapdb</groupId>
        <artifactId>mapdb</artifactId>
        <version>3.0.3</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我运行rigth click - > Run as ... - > java application.

java noclassdeffounderror maven kotlin mapdb

5
推荐指数
1
解决办法
7875
查看次数

使用 Maven 模型时的 Java 11 未命名模块问题

所以,我正在尝试将一个工具从 Java 8 迁移到 Java 11。
我做了第一步,让它在没有模块情况下工作并且代码成功编译。

现在我正在尝试添加 module-info.java,但由于我的工具中使用的库,我首先遇到了问题。有些已经与 Java 11(例如 Lombok)兼容,但有些则不兼容,因此我尝试使用requires和 artifactId 名称导入它们。
但是由于我的 Maven 模型和 Maven 模型构建器依赖性,我似乎卡住了,因为我在构建时遇到以下错误:

[ERROR] the unnamed module reads package org.apache.maven.model.merge from both maven.model.builder and maven.model
[ERROR] module maven.model.builder reads package org.apache.maven.model.merge from both maven.model.builder and maven.model
[ERROR] module maven.model reads package org.apache.maven.model.merge from both maven.model.builder and maven.model
Run Code Online (Sandbox Code Playgroud)

对于这种错误,我该怎么办?似乎我需要两者(如果我评论一个或另一个,构建仍然失败)。这是否意味着我无法将模块添加到我的工具中?
注意:库设置为最新版本(即 3.6.3)

java java-module java-11

5
推荐指数
1
解决办法
363
查看次数