标签: java-module

自动模块名称包含编号

我想在我的应用程序中使用Java 9。我的一个依赖项有一个jar名称:

sdk-http-ahc-2_0
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试将其更改为自动模块时,该模块的名称无效。

requires sdk.http.ahc.2_0; // not valid
Run Code Online (Sandbox Code Playgroud)

我在命名模块时缺少什么吗?我在这里还有其他选择吗?

module java-platform-module-system java-9 java-module

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

跨模块拆分的 Java 9 子包

在 Java 9 中,我可以跨模块拆分子包吗?例如,我可以com.example.foo在一个模块中同时com.example.foo.bar在另一个模块中吗?

这似乎是一个简单的问题,但由于某种原因,我在搜索后无法找到直接答案。权威的参考将不胜感激。

我假设我可以在不同的模块中拥有同级子包,例如com.example.foocom.example.other

java java-9 java-module

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

JMH 不在 Java 模块内运行(无法找到资源:/META-INF/BenchmarkList)

我采用了一个使用maven-surefire-plugin(自动测试)来触发 JMH 基准测试的项目并将其添加module-info.java到其中。现在,META-INF/BenchmarkList不再生成(实际上,整个目录都丢失了)所以我在启动基准测试时最终出现以下错误:

ERROR: Unable to find the resource: /META-INF/BenchmarkList

我怀疑 Java 模块会阻止注释处理器正常运行,但我不知道如何修复它。有任何想法吗?

java maven jmh java-module

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

在module-info中导入swing包

我试图在一个简单的java项目中使用swing API,其中需要在module-info.java中导入javax.swing包

我在 Eclipse IDE 上使用 openJDK-11

module ml.garba.testeur {
    requires javax.swing; 
}
Run Code Online (Sandbox Code Playgroud)

这是 JFrame 实例

package ml.garba.testeur.vue;

import javax.swing.JFrame;

public class Fenetre_Testeur extends JFrame {

}
Run Code Online (Sandbox Code Playgroud)

似乎swing 包的导入不起作用。

我需要帮助

java swing java-module java-11

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

扫描 Spring Boot .jar 文件时在 Java 11 jdeps 工具上获取 NPE

当我试图在我的自定义 JRE 中找到需要链接的 Java 模块时,我确实从jdeps工具中获得了一个 NPE :

marc$ jdeps --module-path $JAVA_HOME/jmods --print-module-deps --multi-release 11 target/blha/jx1-0.0.1-SNAPSHOT/BOOT-INF/lib/*.jar
Exception in thread "main" java.lang.NullPointerException
    at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.requiresTransitive(ModuleGraphBuilder.java:124)
    at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.buildGraph(ModuleGraphBuilder.java:110)
    at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.reduced(ModuleGraphBuilder.java:65)
    at jdk.jdeps/com.sun.tools.jdeps.ModuleExportsAnalyzer.modules(ModuleExportsAnalyzer.java:124)
    at jdk.jdeps/com.sun.tools.jdeps.ModuleExportsAnalyzer.run(ModuleExportsAnalyzer.java:97)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask$ListModuleDeps.run(JdepsTask.java:1023)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:560)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:519)
    at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)
Run Code Online (Sandbox Code Playgroud)

知道如何找到我需要链接到此 Spring Boot 项目的自定义 JRE 的所有模块吗?

java java-module java-11

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

Java 9 模块名称中不允许使用哪些字符?

JPMS 模块名称中不允许使用破折号。据我了解,建议用点替换它们。

但是,我找不到带有替换建议的 Java 模块名称中其他不允许的字符的列表。例如,是否允许使用“_”字符?

java java-9 java-module

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

Java中获取类字段名

public class Product{
    private String id;
    private String name;
    private String description;
    // Getters and setters..
}
Run Code Online (Sandbox Code Playgroud)

从上面的类中,我想在运行时获取描述的字段名称:

Query query = new Query();
        if (productSearchCriteria.getDescription().isPresent()) {
            query.addCriteria(Criteria.where("description").is(productSearchCriteria.getDescription().get()));
        }
Run Code Online (Sandbox Code Playgroud)

目前,我已经对名称进行了硬编码,但它应该是动态的,因为如果有人重命名或更改属性名称,这将不起作用。

环顾四周,我发现了一个reflection-util库。

 String numberProperty = PropertyUtils.getPropertyName(Product.class, Product::getDescription);
Run Code Online (Sandbox Code Playgroud)

这给了我一个例外:

Caused by: java.lang.ClassCastException: class domain.Product$ByteBuddy$QIcFk1aK cannot be cast to class domain.Product (domain.Product$ByteBuddy$QIcFk1aK is in unnamed module of loader net.bytebuddy.dynamic.loading.ByteArrayClassLoader @33943b71; domain.Product is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @5be4b0e6)
    at de.cronn.reflection.util.PropertyUtils.findMethodByGetter(PropertyUtils.java:322) ~[reflection-util-2.6.0.jar:na]
    at de.cronn.reflection.util.PropertyDescriptorCache.lambda$getMethod$4(PropertyDescriptorCache.java:178) ~[reflection-util-2.6.0.jar:na]
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na]
    at de.cronn.reflection.util.PropertyDescriptorCache.getMethod(PropertyDescriptorCache.java:178) ~[reflection-util-2.6.0.jar:na]
    at …
Run Code Online (Sandbox Code Playgroud)

java spring java-module java-14

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

为什么添加 module-info 后 Java 无法读取相同的资源文件?

有一个具有标准 Maven 文件夹结构的简单 Java 项目。

src
  main
    java
      mypackage
        Main.java
    resource
      abc
        cde.txt  
Run Code Online (Sandbox Code Playgroud)

Main.java(省略样板)

var path = "abc/cde.txt";
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);

if (input == null) {
    throw new IllegalStateException("Resource not found");
} else {
   // read from input
}
Run Code Online (Sandbox Code Playgroud)

该代码工作正常并从绝对路径
"%project_root%/target/classes/abc/cde.txt"(编译后的代码)读取文件。

添加文件后src/main/java/module-info.java情况发生变化:程序找不到文件并抛出in branch (input == null)

如何以旧方式从“资源”文件夹中读取文件并同时拥有:资源文件夹中的java模块和资源?我想避免"src/main/resources"到处添加前缀。

java resources classloader java-module

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

对于不能在 Eclipse 上运行的模块,“需要传递”?

我开始研究模块,我想尝试“需要传递”。所以我为界面创建了一个模块:

module interfacesModule {
    
    exports com.my.interfaces;
    
}
Run Code Online (Sandbox Code Playgroud)

有 1 个接口:

package com.my.interfaces;

public interface MyInterface {

    void go();

}
Run Code Online (Sandbox Code Playgroud)

一个实现模块:

module javaModuleA {
    
    requires interfacesModule;
    
    exports com.my.moduleA;
    
}
Run Code Online (Sandbox Code Playgroud)

班级:

package com.my.moduleA;

import com.my.interfaces.MyInterface;

public class ClassA implements MyInterface {
    
    public void go() {
        System.out.println("in class A");
    }

}
Run Code Online (Sandbox Code Playgroud)

和主模块:

module mainModule {
    
    requires transitive javaModuleA;
    requires interfacesModule; // this line I want to comment, to use from requires transitive

}
Run Code Online (Sandbox Code Playgroud)

班级:

package com.my;

import com.my.interfaces.MyInterface;
import com.my.moduleA.ClassA;

public class Main …
Run Code Online (Sandbox Code Playgroud)

java java-module

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

如何在Java 9中以其名称获取模块?

如何java.lang.Module通过Java 9中的字符串名称获取?

例如,我们有

String name = "some.module";
Module module = //how to get here it?
Run Code Online (Sandbox Code Playgroud)

java java-9 java-module

0
推荐指数
1
解决办法
345
查看次数