标签: java-12

-XX:+ StressLCM,-XX:+ StressGCM JVM的选项

在玩一些jcstress代码时,我注意到两个对我来说很新的参数:StressLCMStressGCM

对我来说,要做的第一件事就是在源代码本身中搜索这些内容,尽管我发现了一些内容,但仍不清楚它们的实际作用。我真的很希望在源代码中看到一些注释,但这些注释可能会有所帮助,但是没有运气。

我还发现了在其中添加了这些错误的错误描述,但该解释对我而言毫无意义:

在LCM / GCM中随机化指令调度。

有人可以用简单的英语解释他们的工作吗?

java jvm jvm-hotspot java-12

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

使用具有surefire和failsafe功能的预览功能运行测试时出现问题

我正在尝试使用将项目迁移到Java 12 --enable-preview

--enable-preview在编译器设置中添加了:

        <plugin>                                                            
            <artifactId>maven-compiler-plugin</artifactId>                  
            <version>3.8.0</version>                                        
            <configuration>                                                 
                <release>12</release>                          
                <compilerArgs>                                                                                  
                    <arg>--enable-preview</arg>                             
                </compilerArgs>                                                                      
            </configuration>                                                
        </plugin>                                                                                                                                         
Run Code Online (Sandbox Code Playgroud)

并在argLine中添加了它,以确保surefire和failsafe:

<properties>                                                                                             
    <argLine>--enable-preview</argLine>                        
</properties> 
Run Code Online (Sandbox Code Playgroud)

mvn clean verify得出以下结果:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M3:test (default-test) on project lombok-jdk10: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M3:test failed: java.lang.UnsupportedClassVersionError: Preview features are not enabled for com/kirela/lombok/BarTest (class file version 56.65535). Try running with '--enable-preview' -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

我也尝试将argLine直接添加到surefire / failsafe配置中,但是结果是相同的。

我在这里想念什么?

我这是surefire / failsafe中的错误吗?

EDIT2:Surefire和故障安全配置:

        <plugin>                                                            
            <groupId>org.apache.maven.plugins</groupId>                     
            <artifactId>maven-surefire-plugin</artifactId>                  
            <version>3.0.0-M3</version>                                     
            <configuration>                                                 
                <forkCount>2</forkCount>                                    
            </configuration>                                                
        </plugin>                                                           
        <plugin>                                                            
            <groupId>org.apache.maven.plugins</groupId>                     
            <artifactId>maven-failsafe-plugin</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java maven maven-surefire-plugin maven-failsafe-plugin java-12

9
推荐指数
3
解决办法
989
查看次数

推断的类型不符合无关变量的等式约束错误

我有以下代码

public class TeeingCollector {

    public static void main(String[] args) {
        //        var strs = List.of("abc");
        var dividedStrings = Stream.of("foo", "hello", "bar", "world")
            .collect(Collectors.teeing(
                        Collectors.filtering((String s) -> s.length() <= 3, Collectors.toList()),
                        Collectors.filtering((String s) -> s.length() > 3, Collectors.toList()),
                        List::of
                        ));
        System.out.println(dividedStrings);
    }
    private static class Employee {
        boolean isActive;

        public Employee(boolean isActive) {
            this.isActive = isActive;
        }

        public boolean isActive() {
            return isActive;
        }

        @Override
            public String toString() {
                return "Employee{" +
                    "isActive=" + isActive +
                    '}';
            }
    }
    private …
Run Code Online (Sandbox Code Playgroud)

java javac java-12

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

lombok是否可以与Java 12一起使用?

我最近在Intellij上使用Java 11和Lombok,一切都很好。
我尝试使用Java 12,但现在总是遇到编译错误,因为lombok的注释似乎被忽略了。

有人知道lombok是否支持Java 12吗?

- Intellij : 2019 1.1
- Lombok : 1.18.6
- Lombok plugin : v0.24
- JDK : 12.0.1
Run Code Online (Sandbox Code Playgroud)

java intellij-idea lombok intellij-lombok-plugin java-12

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

使用UnicodeBlock打印国际象棋符号吗?

附带jdk12,国际象棋符号(来源):

Unicode 11.0.0引入了JDK 12现在包含的以下新功能

[...] 4个块,用于以下现有脚本:

  • 格鲁吉亚扩展

  • 玛雅数字

  • ndic Siyaq数字

  • 象棋符号

考虑到这一点,我尝试使用以下代码打印这些字符,以测试功能并稍后在小型国际象棋游戏中使用它们:

Character.UnicodeBlock block = Character.UnicodeBlock.CHESS_SYMBOLS;
for (int i = 0; i < 1114112; i++) {
    char unicode = (char) i;
    if(Character.UnicodeBlock.of(unicode) == block) {
        System.out.println(unicode);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它没有打印任何内容。如果我将其替换CHESS_SYMBOLS为例如,该代码将起作用ARABIC。我有Java 12.0.1。

问题:上面的代码为什么不打印任何内容?

java unicode java-12

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

包org.w3c.dom可以从多个模块访问:&lt;未命名&gt;,java.xml

我无法将org.w3c.dom.NodeList包导入到Eclipse。它显示

可以从多个模块中访问org.w3c.dom包:<unnamed>eclipse中的“ java.xml”错误消息。

请让我知道如何解决此问题?

Eclipse版本:

适用于企业Java开发人员的Eclipse IDE。

版本:2019-06(4.12.0)

版本号:20190614-1200

Java版本:

java版本“ 12.0.1” 2019-04-16

Java(TM)SE运行时环境(内部版本12.0.1 + 12)

Java HotSpot(TM)64位服务器VM(内部版本12.0.1 + 12,混合模式,共享)

java eclipse w3c dom java-12

8
推荐指数
5
解决办法
2290
查看次数

返回封闭开关表达式之外

我在Java 12中使用开关表达式¹将字符串转换为HTTP方法

static Optional<RequestMethod> parseRequestMethod(String methodStr) {
    return Optional.ofNullable(
          switch (methodStr.strip().toUpperCase(Locale.ROOT)) {
              case "GET" -> RequestMethod.GET;
              case "PUT" -> RequestMethod.PUT;
              case "POST" -> RequestMethod.POST;
              case "HEAD" -> RequestMethod.HEAD;

              default -> {
                  log.warn("Unsupported request method: '{}'", methodStr);
                  return null;
              }
          });
}
Run Code Online (Sandbox Code Playgroud)

我想警告默认分支中不支持的方法,并返回null(然后包装在Optional中)。

但是上面的代码会导致编译器错误:

返回封闭开关表达式之外

我该如何进行编译?


为了完整起见,这是RequestMethod枚举的定义:

enum RequestMethod {GET, PUT, POST, HEAD}
Run Code Online (Sandbox Code Playgroud)

¹ 开关表达式是Java 12中的预览功能。

java switch-statement java-12 java-13

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

原始字符串文字 - 删除前导缩进

编辑:原始字符串文字已从JDK 12中删除,但我将打开此问题并在重新引入Raw String Literals时相应地编辑它.


在测试Raw String Literals(这是Java 12中的预览功能)时,我遇到了以下代码片段:

System.out.println(`
        Test 1
            Test 2
                Test 3
`);
Run Code Online (Sandbox Code Playgroud)

其中输出如下:

          
        Test 1
            Test 2
                Test 3
                          
Run Code Online (Sandbox Code Playgroud)

但是,我希望输出类似于以下内容:

Test 1
    Test 2
        Test 3
Run Code Online (Sandbox Code Playgroud)

删除前导缩进以匹配预期格式的最简单方法是什么?

java string indentation rawstring java-12

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

如何在Android项目中使用JDK 12

我正在运行Android Studio 3.5 Beta5。我一直在尝试尝试用Robolectric针对Android SDK 29运行单元测试。指示我去10,然后11,然后12!

我下载了JDK 12,现在我想将Android Studio的JDK位置配置为12。但是,当我尝试这样做时,会收到以下警告消息:“请选择一个有效的JDK 8目录”。请参见下面的屏幕截图。

是否需要更改其他设置才能使该对话框允许我选择大于8的JDK?还是只是不可能?

项目结构对话框

警告信息

java android android-studio java-12

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

安装JDK后,无法运行.jar

在学习过程中,它已在我的计算机上安装了JDK,以便能够运行eXist数据库。此后,执行命令后,出现java -jar fileName.jar以下错误。

图形设备初始化失败:d3d,sw初始化QuantumRenderer时出错:找不到合适的管道java.lang.RuntimeException:java.lang.RuntimeException:初始化QuantumRenderer时出错:在com.sun.javafx.tk.quantum.QuantumRenderer上找不到合适的管道。 com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)上的getInstance(QuantumRenderer.java:280)com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)上的QuantumToolkit.init(QuantumToolkit.java:222) com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)上的.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl .java:658)(位于com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678))。javafx.application.LauncherImpl.lambda $ launchApplication $ 2(LauncherImpl.java:195)at java.base / java.lang.Thread.run(Thread.java:835)原因:java.lang.RuntimeException:初始化QuantumRenderer时出错:no在com.sun.javafx.tk.quantum.QuantumRenderer $ PipelineRunnable.run(QuantumRenderer.java:124)处的com.sun.javafx.tk.quantum.QuantumRenderer $ PipelineRunnable.init(QuantumRenderer.java:94)上找到合适的管道。 .. 1个以上线程“ main”中的异常java.lang.RuntimeException:在com.sun.javafx.application.PlatformImpl.startup的com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)上找不到工具包(PlatformImpl.java:267)com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)com.sun.javafx.application.LauncherImpl。位于com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)的com.sun.javafx.application.LauncherImpl.lambda $ launchApplication $ 2(LauncherImpl.java:195)的startToolkit(LauncherImpl.java:658) java.base / java.lang.Thread.run(Thread.java:835)

Windows 10

java -version
Run Code Online (Sandbox Code Playgroud)

openjdk版本“ 12.0.2” 2019-07-16采用OpenJDK运行时环境

OpenJDK(内部版本12.0.2 + 10)采用OpenJDK 64位服务器VM

OpenJDK(内部版本12.0.2 + 10,混合模式,共享)

java javafx java-12

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