标签: java-11

Java 11 中的内部 API 替换

有人可以告诉我下面列出的 API 的替换吗

SunToolkit.getContainingWindow

SwingUtilities2.getFontMetrics

SwingUtilities2.stringWidth

SwingUtilities2.drawString

SwingUtilities2.clipStringIfNecessary

SwingUtilities2.setLeadAnchorWithoutSelection

DefaultLookup.getIcon
Run Code Online (Sandbox Code Playgroud)

以及下面列出的课程

sun.font.FontUtilities
com.sun.java.swing.plaf.motif.MotifComboBoxUI
com.sun.java.swing.plaf.windows.WindowsComboBoxUI
com.sun.java.swing.plaf.motif.MotifScrollBarUI
com.sun.java.swing.plaf.windows.WindowsScrollBarUI 
com.sun.swing.internal.plaf.metal.resources.metal_it
Run Code Online (Sandbox Code Playgroud)

java migration graphics swing java-11

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

Scala 12.x和Java 11` String.lines`,如何在链式调用中强制隐式转换?

问题描述 Scala StringOps提供了一个lines返回的方法Iterator[String].Java 11添加lines()了返回类型java.Stream[String].

在一个链式方法调用中

val text: String
text.lines.foldLeft("")(_ + _)
Run Code Online (Sandbox Code Playgroud)

代码将不再编译并抛出foldLeft未在java.Stream [String]上定义的exeption .据我所知,隐式解析不再适用,因为现在已经在java.String中找到了lines方法.

我如何表达我希望隐式被应用(没有parens的那个)而不是java.String.lines()

附加信息

  • 我发现linesIterator但它被弃用了.
  • 降级是一种选择,但有一种解决方法.
  • val text : StringOps 看起来很丑,但解决了它,但我对这个解决方案不满意

java string scala java-11

7
推荐指数
2
解决办法
539
查看次数

了解java 11动态类文件常量

我试图理解java 11(JEP 309)动态类文件常量,它看起来像一个有趣的功能.
我谷歌,但我没有找到详细的文章(如果你知道任何请分享),我只是觉得这一个由拉斐尔·温特,但我仍然有一些问题:

  1. 这个功能是否可以扩展可以添加到池中的常量类型(实际上池可以保存原始值和字符串值 - 如果我错了,请纠正我)
  2. 在文章中说,动态常量是由调用bootstrap方法生成的,并且该方法需要从类的常量池中引用,但是如何操作(如何从类的常量池引用此方法? ?)??.

java java-11

7
推荐指数
0
解决办法
850
查看次数

Java 11软件包javax.xml.soap不存在

我正在尝试使用SOAP创建一条简单的消息:

MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
Run Code Online (Sandbox Code Playgroud)

当我使用Java 8构建项目时,可以,但是使用Java 11构建项目失败,并出现编译错误:

package javax.xml.soap does not exist
Run Code Online (Sandbox Code Playgroud)

如何解决此问题?

java jax-ws java-11

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

VSCode 中的 JavaFX-11:错误:无法找到或加载主类 Files\Java\javafx-sdk-11.0.2\lib

我一直在尝试在 Visual Studio Code 中设置 JavaFX-11。

我找到了这篇JavaFX-11 with VSCode 文章,其中解释了如何执行此操作,并按照步骤操作。

但是,我需要通过vmArgs在launch.json文件中添加一个条目来包含 JavaFX SDK 的模块路径:

{
"configurations": [
    {
        "type": "java",
        "name": "CodeLens (Launch) - Main",
        "request": "launch",
        "vmArgs": "--module-path C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib --add-modules javafx.controls,javafx.fxml",
        "mainClass": "hellofx.Main",
        "projectName": "hellofx"
    }
]
Run Code Online (Sandbox Code Playgroud)

}

正如您在vmArgs条目中看到的,是我到 JavaFX SDK 的本地路径。但是,当我尝试运行该程序时,出现以下错误:

错误:无法找到或加载主类 Files\Java\javafx-sdk-11.0.2\lib 导致:java.lang.ClassNotFoundException: Files\Java\javafx-sdk-11.0.2\lib

在过去的几个小时里,我一直试图弄清楚为什么它不起作用。我的论点写错了吗?我看到有.jmods文件。我应该下载那些文件吗?还有其他方法可以指定模块路径吗?

值得一提的是,我在 Windows 10 中运行 Visual Studio Code,所以我必须使用转义序列来使用反斜杠。

javafx visual-studio-code module-path java-11 javafx-11

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

充气城堡安全提供程序不会在 Java 11/12 下加载

我正在尝试做一些应该是微不足道的事情,但我面临着一个问题。

将 JavaFx 应用程序从 Java 8 迁移到 Java 11 后,充气城堡安全提供程序将不会加载(也尝试了 Java 12,结果相同)。这是我更新为使用 Java 11 兼容插件的 Maven 项目。它编译得很好,但是在运行时我在终端窗口中得到了这个:

jar .Launcher java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at javafx.graphics/com.sun。 javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl。 invoke0(Native Method) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java。base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at java.base/sun.launcher.LauncherHelper$ FXHelper.main(LauncherHelper.java:1051) 由:java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider at .Launcher.main(Launcher.java:14) ... 11 引起:java.lang.ClassNotFoundException:org.bouncycastle.jce。 provider.BouncyCastleProvider 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java。 base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 12 更多

在我的 java.security 中,我将充气城堡提供者作为第一个提供者(也尝试将其作为最后一个提供者,但结果相同)

#
# List of providers and their preference orders (see above):
# …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle maven-3 maven java-11

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

IntelliJ IDEA 不会在构建时复制资源

我的构建输出是out/production/classes. Java 文件可以很好地编译成类并被放入out/production/classes/[packageName],但不会复制资源。据我所知,他们应该直接进入out/production/classes目录。

资源不会被复制

如果相关,我正在使用 Java 11、Spring Boot 和 Gradle。这是我的build.gradle

plugins {
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'net.impfox'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    // hidden
}
Run Code Online (Sandbox Code Playgroud)

我的编译器设置:

编译器设置

我的资源没有被复制到输出目录的原因可能是什么,我该如何解决这个问题?

java build intellij-idea gradle java-11

7
推荐指数
2
解决办法
2373
查看次数

无法公开 long com.sun.management.internal.OperatingSystemImpl.getOpenFileDescriptorCount()

我在 Java 11 的服务器日志中收到以下错误。有什么解决方案吗?

[2019-05-02 18:06:18 IST] [] ERROR com.codahale.metrics.ScheduledReporter [SID= UID= BGCD=] - Exception thrown from Slf4jReporter#report. Exception was suppressed.
java.lang.reflect.InaccessibleObjectException: Unable to make public long com.sun.management.internal.OperatingSystemImpl.getOpenFileDescriptorCount() accessible: module jdk.management does not "opens com.sun.management.internal" to unnamed module @489448ac
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
    at deployment.myPage.war//com.codahale.metrics.jvm.FileDescriptorRatioGauge.invoke(FileDescriptorRatioGauge.java:48)
    at deployment.myPage.war//com.codahale.metrics.jvm.FileDescriptorRatioGauge.getRatio(FileDescriptorRatioGauge.java:35)
    at deployment.myPage.war//com.codahale.metrics.RatioGauge.getValue(RatioGauge.java:64)
    at deployment.myPage.war//com.codahale.metrics.RatioGauge.getValue(RatioGauge.java:11)
    at deployment.myPage.war//com.codahale.metrics.DerivativeGauge.getValue(DerivativeGauge.java:23)
    at deployment.myPage.war//com.codahale.metrics.Slf4jReporter.logGauge(Slf4jReporter.java:306)
    at deployment.myPage.war//com.codahale.metrics.Slf4jReporter.report(Slf4jReporter.java:220)
    at deployment.myPage.war//com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:243)
    at deployment.myPage.war//com.codahale.metrics.ScheduledReporter$1.run(ScheduledReporter.java:182)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Run Code Online (Sandbox Code Playgroud)

java maven java-11

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

包 sun.awt 不存在

当使用ant, 调用sun.awt.AppContext工作时,但是使用 AdaptOpenJDK11 使用 IntelliJ 编译的相同代码失败。

  • sun.awt.AppContext使用Oracle JDK8与 IntelliJ 配合使用
  • sun.awt.AppContext采用AdoptOpenJDK11不适用于IntelliJ

尽管 Sun/Oracle 已经警告过一段时间要避免使用这些sun.*包,但Java中的某些功能(错误?)仍然需要它们,而且很奇怪,命令行似乎很高兴。

示例代码:

package test;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import sun.awt.AppContext;

public class Main {

    public static void main(String[] args) {
        //Update printer list in CUPS immediately
        AppContext.getAppContext().put(PrintServiceLookup.class.getDeclaredClasses()[0], null);

        PrintService[] printers = PrintServiceLookup.lookupPrintServices(null, null);
        for (PrintService p : printers) {
            System.out.println(p.getName());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如何配置 IntelliJ 使其表现得像ant并允许访问sun.awt.* …

java intellij-idea java-11 adoptopenjdk openjdk-11

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

Java Maven 项目“不再支持源选项 5。使用 6 或更高版本。”

我正在学习 Bryan Hansen 的 PluralSight 课程“Spring 框架:Spring 基础知识”。我完全按照演示进行操作(我相信),但收到错误消息“错误:java:不再支持源选项 5。使用 6 或更高版本。”。

我正在使用最新版本的 IntelliJ,具有以下配置:

  • 在“首选项 > 构建、执行、部署 > 编译器 > Java 编译器”下,我将项目字节码版本设置为 Java 11,并将每个模块字节码版本设置为“与语言级别相同”。
  • 在“文件 > 项目结构 > 项目”下,我将项目 SDK 设置为 11,并将项目语言级别设置为 11。
  • 我的 pom.xml 具有以下构建设置:

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>

Run Code Online (Sandbox Code Playgroud)

我看过其他一些类似的帖子,他们有时似乎将上述配置设置为 1.6 而不是 11,但我正在尝试密切关注本教程。我仍然对这里的差异感到好奇。

不确定是什么导致抛出此错误,据我所知,我已经正确设置了所有内容,但显然情况并非如此。任何帮助,将不胜感激。

java intellij-idea maven java-11

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