标签: java-11

默认垃圾收集器 Hotspot JVM 的标准 11/17

我找到了一个资料来源,描述了使用的默认 gc 根据可用资源而变化。看来jvm使用g1gc或serial gc取决于硬件和操作系统。

在某些硬件和操作系统配置上默认选择串行收集器

有人可以指出关于具体标准是什么以及如何在 dockerized/kubernetes 环境中应用的更详细的资料来源吗?换句话说:

可以将k8s中pod的资源请求设置为例如。1500 mCpu 让 jvm 使用串行 gc 并更改为 2 Cpu 将默认 gc 更改为 g1gc?何时使用哪个 gc 的限制是否会根据 jvm 版本(11 与 17)而变化?

java garbage-collection jvm java-11 java-17

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

使用JDK 11的Maven在下载错误的依赖项时失败,"extension(10)不应该在server_hello中显示"

使用JDK11在我的项目上运行测试在调用Maven Aether时,我在此行遇到了失败:

下载错误依赖项时会发生这种情况:

公地MATH3:公地MATH3

我的假设是我面临一个JDK11错误:

  - https://stackoverflow.com/questions/52016415/jdk-11-ssl-error-on-valid-certificate-working-in-previous-versions
Run Code Online (Sandbox Code Playgroud)

如果是问题,这怎么可以解决?

由于stackoverflow限制,Stacktrace部分被截断:

[INFO] [ERROR] Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:DEV-SNAPSHOT:configure (configure) on project test-plugins: Failed to collect dependencies at org.apache.jmeter:ApacheJMeter_components:jar:2.13 -> org.apache.jmeter:jorphan:jar:2.13 -> commons-math3:commons-math3:jar:3.4.1: Failed to read artifact descriptor for commons-math3:commons-math3:jar:3.4.1: Could not transfer artifact commons-math3:commons-math3:pom:3.4.1 from/to JBoss (https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/): extension (10) should not be presented in server_hello -> [Help 1]
[INFO] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:DEV-SNAPSHOT:configure (configure) on project test-plugins: Failed to collect dependencies at org.apache.jmeter:ApacheJMeter_components:jar:2.13 -> org.apache.jmeter:jorphan:jar:2.13 -> …
Run Code Online (Sandbox Code Playgroud)

java ssl maven-plugin maven java-11

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

log4j2与Java 11兼容吗?

我尝试在最新的Java 11上运行我的项目.一切正常,除了特定的文件记录器.日志在以前的Java版本(10,9,8)上运行良好,但在Java 11上则不行.

在服务器运行期间,我只看到1个警告:

警告:不支持sun.reflect.Reflection.getCallerClass.这会影响性能.

这是我的配置:

<Configuration>

    <Appenders>

        <RollingFile name="postgresDBLog" fileName="${sys:logs.folder}/postgres.log"
              filePattern="${sys:logs.folder}/archive/postgres.log.%d{yyyy-MM-dd}">
            <PatternLayout>
                <pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>

        <RollingFile name="workersLog" fileName="${sys:logs.folder}/worker.log"
                     filePattern="${sys:logs.folder}/archive/worker.log.%d{yyyy-MM-dd}">
            <PatternLayout>
                <pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>

        <RollingFile name="statsLog" fileName="${sys:logs.folder}/stats.log"
                     filePattern="${sys:logs.folder}/archive/stats.log.%d{yyyy-MM-dd}">
            <PatternLayout>
                <pattern>%msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>

        <RollingFile name="userLog" fileName="${sys:logs.folder}/blynk.log"
                     filePattern="${sys:logs.folder}/archive/blynk.log.%d{yyyy-MM-dd}">
            <PatternLayout>
                <pattern>%d{HH:mm:ss.SSS} %-5level- %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>

    </Appenders>

    <Loggers>

        <Logger name="cc.blynk.server.workers" level="debug" additivity="false">
            <appender-ref ref="workersLog"/>
        </Logger>
        <Logger name="cc.blynk.server.workers.StatsWorker" level="debug" additivity="false">
            <appender-ref ref="statsLog"/>
        </Logger>
        <Logger name="cc.blynk.server.db" level="debug" additivity="false">
            <appender-ref ref="postgresDBLog"/> …
Run Code Online (Sandbox Code Playgroud)

java log4j2 java-11

19
推荐指数
5
解决办法
6265
查看次数

JRE 11在哪里?

更新:

(更清楚)

你可以找到..._linux-x64_bin.rpm,..._windows-x64_bin.exejre在Oracle的官方网站(点击每一个).但是在哪里jre?!

另外,JRE不包括JDK.我期待C:\Program Files (x86)\Common Files\Oracle\Java安装javapath.

我们的应用程序的最终用户是否需要安装JDK?


问题的原始版本:

我从官方网站下载并安装了Oracle JDK 11 .我安装了 PATHjavapath_target_3015921(在Windows机器上一台Linux机器和第二对第一).但发现了意外的事情!JRE在哪里?

这是CentOS 7上安装路径的快照.如您所见,没有..._linux-x64_bin.rpm文件夹:

# ls /usr/java/jdk-11.0.1/
bin  conf  include  jmods  legal  lib  README.html  release
Run Code Online (Sandbox Code Playgroud)

关于Oracle JDK 8的相同快照(..._windows-x64_bin.exe特别参见文件夹):

# ls /usr/java/jdk1.8.0_191-amd64/
bin             lib          src.zip
COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
jre             release
Run Code Online (Sandbox Code Playgroud)

Windows机器上的相同快照:

> dir /b "C:\Program Files\Java\jdk-11.0.1" …
Run Code Online (Sandbox Code Playgroud)

java java-11

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

使用.NET 6或更高版本时需要Java SDK 11.0或更高版本

我已经安装了 .NET 6(版本6.0.100-rc.1.21458.32)和 Visual Studio 2020 Preview(尽管它可能不是先决条件)。

我正在尝试调试 hello-world 应用程序,但收到有关 Java 的构建错误

C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\31.0.100-rc.1.12\targets\Microsoft.Android.Sdk.Tooling.targets(20,5): error XA0031: 
Java SDK 11.0 or above is required when using .NET 6 or higher. 
Run Code Online (Sandbox Code Playgroud)

我已经安装了 Java 17 设置Path,并指向 Visual Studio 设置中的 Java 开发工具包位置(工具->选项->Xamarin->Android 设置)。因为这不起作用,我已将 JDK 位置设置为 Microsoft 的 openjdk,但它仍然不起作用。

在此输入图像描述

这是怎么回事?

.net java installation java-11 maui

19
推荐指数
5
解决办法
3万
查看次数

KeyCloak 服务器导致:java.lang.ClassNotFoundException:java.security.acl.Group

我正在运行 KeyCloak 服务器来验证想要访问 Spring Boot/Spring Web REST API 的用户。但是,尝试进行身份验证时发生错误。

以下工作:

  • 当我访问 http://localhost:8080/path/to/restapi
  • 我得到了预期的登录屏幕: -- KeyCloak 登录屏幕
  • 当我单击登录时,浏览器中的重定向发生以下错误:

白标错误页面 此应用程序没有明确的 /error 映射,因此您将其视为后备。

这是打印到 Spring Boot 控制台的错误:

Caused by: java.lang.ClassNotFoundException: java.security.acl.Group
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]
  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
  ... 33 common frames omitted
Run Code Online (Sandbox Code Playgroud)

KeyCloak 服务器显示该会话对于该应用程序的用户来说是活动的。但是,由于上述缺少的类,认证过程永远不会完成。

classnotfoundexception spring-boot keycloak java-11 java-14

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

是否有一种轻量级方法可以在 Java 9+ 中添加安全点

Java 9+ 中是否有更便宜的方法调用来保持其安全点?

JVM 在运行时移除安全点以提高效率,但这会使分析和监控代码变得更加困难。出于这个原因,我们特意在精心挑选的地方添加了琐碎的调用,以确保存在安全点。

public static void safepoint() {
    if (IS_JAVA_9_PLUS)
        Thread.holdsLock(""); // 100 ns on Java 11
    else
        Compiler.enable(); // 5 ns on Java 8
}

public static void optionalSafepoint() {
    if (SAFEPOINT_ENABLED)
        if (IS_JAVA_9_PLUS)
            Thread.holdsLock("");
        else
            Compiler.enable();
}
Run Code Online (Sandbox Code Playgroud)

在 Java 8 上,这种开销很好,但Compiler.enable()在 Java 9+ 中被优化掉了,所以我们必须使用更昂贵的方法,或者不启用此功能。

编辑:除了分析器之外,我还使用了safepoint()从中获取更好的细节,Thread.getStackTrace()以便应用程序可以对其自身进行分析,例如,当执行操作需要很长时间时。

java jvm java-11

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

jlink不存在如何解决?

我正在使用并尝试在一个裸项目react native中使用expo ,但是每当我尝试使用命令运行应用程序时,我都会收到此错误:npm run android

Execution failed for task ':expo-modules-core:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':expo-modules-core:androidJdkImage'.
   > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
      > Execution failed for JdkImageTransform: /home/dukizwe/Android/Sdk/platforms/android-31/core-for-system-modules.jar.
         > jlink executable /usr/lib/jvm/java-14-openjdk-amd64/bin/jlink does not exist.
Run Code Online (Sandbox Code Playgroud)

我使用的是linux操作系统,Android studioJDK都已正确安装。

文件夹内部的/usr/lib/jvm/结构如下所示:

  • java-1.11.0-openjdk-amd64
  • java-1.14.0-openjdk-amd64
  • java-11-openjdk-amd64
  • java-14-openjdk-amd64
  • jdk-18

我不知道为什么它在java-14-openjdk-amd64文件夹中查找,因为在该文件夹中没有jlink可执行文件。

android studiosi中SDK Location指向java-11-openjdk. 有什么帮助吗?

java android react-native expo java-11

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

较新 JDK 版本中的历史时区偏移

我在使用 . 测试一些时区时发现了一个奇怪的 java 差异ZonedDateTime。我试图解析 1970 年之前的日期,发现结果在 java 版本之间发生变化。1932 年荷兰的偏移量是+00:19。有谁知道为什么会发生这种情况?我觉得这可能与时区数据库项目( https://github.com/eggert/tz )中欧洲时区的捆绑有关,但我不确定。有没有办法获得java中的旧行为?就像设置一样?


ZonedDateTime zdt = LocalDateTime.parse("1932-10-20T10:19:32.000").atZone(ZoneId.of("Europe/Amsterdam"));
System.out.println(zdt);
    
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    .append(ISO_LOCAL_DATE)
    .appendLiteral('T')
    .appendValue(HOUR_OF_DAY, 2)
    .appendLiteral(':')
    .appendValue(MINUTE_OF_HOUR, 2)
    .optionalStart()
    .appendLiteral(':')
    .appendValue(SECOND_OF_MINUTE, 2)
    .optionalStart()
    .appendFraction(NANO_OF_SECOND, 3, 3, true)
    .appendOffset("+HH:MM", "Z")
    .toFormatter();

System.out.println(formatter.format(zdt));

System.out.println(
    java.time.zone.ZoneRulesProvider
                  .getVersions("UTC")
                  .lastEntry()
                  .getKey()
);
Run Code Online (Sandbox Code Playgroud)

结果 Temurin (java jdk) 11.0.16 (预期输出),最后一行显示时区数据库版本:

1932-10-20T10:19:32+00:19:32[Europe/Amsterdam]
1932-10-20T10:19:32.000+00:19
2022a
Run Code Online (Sandbox Code Playgroud)

Temurin 11.0.17 的结果:

1932-10-20T10:19:32Z[Europe/Amsterdam]
1932-10-20T10:19:32.000Z
2022c
Run Code Online (Sandbox Code Playgroud)

编辑:从 17.0.5 开始,JDK 17 中也存在一个问题:

铁木林 17.0.4:

1932-10-20T10:19:32+00:19:32[Europe/Amsterdam]
1932-10-20T10:19:32.000+00:19
2022a
Run Code Online (Sandbox Code Playgroud)

铁木林 …

java timezone-offset tzdata java-11

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

Eclipse 4.12 - java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory

运行我的 eclipse 插件时出现以下错误。Eclipse 使用 4.12 和 java11。它曾经在 eclipse 4.6.3 + java8 中工作正常。

javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory cannot be found by com.my.cep.studio.cluster.topology_0.0.0]

!ENTRY com.my.cep.diagramming 4 0   at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:146)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:289)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:412)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:375)
    at com.my.cep.studio.cluster.topology.editors.ClusterTopologyDiagramManager.parseFile(ClusterTopologyDiagramManager.java:193)
    at com.my.cep.studio.cluster.topology.editors.ClusterTopologyDiagramManager.openModel(ClusterTopologyDiagramManager.java:175)
    at com.my.cep.diagramming.drawing.BaseDiagramManager.createDrawingCanvas(BaseDiagramManager.java:233)
    at com.my.cep.diagramming.drawing.DiagramManager$2.run(DiagramManager.java:259)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory cannot …
Run Code Online (Sandbox Code Playgroud)

eclipse eclipse-plugin eclipse-rcp java-11

17
推荐指数
5
解决办法
4万
查看次数