标签: java-9

Java 9可以在32位操作系统上运行吗?

似乎Oracle的可用下载列表中没有32位下载包.

UPDATE

可以在这里下载:

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/9+181/jdk-9_windows-x86_bin.exe
Run Code Online (Sandbox Code Playgroud)

java java-9

55
推荐指数
3
解决办法
4万
查看次数

需求和需要Java 9中的传递语句有什么区别?

需求需要模块声明中的传递模块语句有什么区别?

例如:

module foo {
    requires java.base;
    requires transitive java.compiler;
}
Run Code Online (Sandbox Code Playgroud)

java requires java-9 java-module module-info

54
推荐指数
3
解决办法
6606
查看次数

Maven是否已为JDK9做好准备?

今天我尝试了最新的jdk9 Build 113,并尝试使用最新的Maven 3.3.9 编译我的项目

这些是命令(部分通过twitter发现)

export MVN_OPTS="-Dmaven.compiler.fork -Dmaven.compiler.executable=/somewhere/Downloads/jdk-9/bin/javac"
export JAVA_HOME="/somewhere/Downloads/jdk-9"
mvn clean install
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误 ......简而言之:

[WARNING] Error injecting: org.codehaus.plexus.archiver.jar.JarArchiver
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more
[WARNING] Error injecting: org.apache.maven.plugin.jar.JarMojo
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more
Run Code Online (Sandbox Code Playgroud)

什么是正确的maven配置或用于JDK9的参数?

$ mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: /home/somewhere/Downloads/maven …
Run Code Online (Sandbox Code Playgroud)

maven-3 maven java-9

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

如何解决InaccessibleObjectException("无法使{member}可访问:模块{A}在Java 9上没有'打开{package}'到{B}")?

在Java 9上运行应用程序时,在各种情况下都会发生此异常.某些库和框架(Spring,Hibernate,JAXB)特别容易出现这种情况.这是Javassist的一个例子:

java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1941a8ff
    at java.base/jdk.internal.reflect.Reflection.throwInaccessibleObjectException(Reflection.java:427)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:201)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
    at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:102)
    at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:180)
    at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163)
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:501)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:486)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:422)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:394)
Run Code Online (Sandbox Code Playgroud)

消息说:

无法使受保护的最终java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte [],int,int,java.security.ProtectionDomain)抛出java.lang.ClassFormatError可访问:module java.base没有"打开java.lang"到未命名的模块@ 1941a8ff

可以做些什么来避免异常并使程序成功运行?

java reflection java-9

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

java 9中javax.activation包的替代是什么?

似乎javax.activation在Java 9中不推荐使用package .Oracle迁移指南建议--add-modules java.activation在JVM启动期间使用选项.

但是,我想避免这种情况并替换javax.activationpackage的类,因为它已被弃用,并将在以后的java版本中删除.我想,应该有某种替代方案javax.activation.如果有可用的话,它是什么?

java jvm javax.activation java-9

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

如何在没有JVM参数的情况下隐藏java 9中的"非法反射访问"警告?

我只是尝试用Java 9运行我的服务器并得到下一个警告:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/home/azureuser/server-0.28.0-SNAPSHOT.jar) to constructor java.nio.DirectByteBuffer(long,int)
WARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Run Code Online (Sandbox Code Playgroud)

我想隐藏此警告而不--illegal-access=deny在启动期间添加JVM选项.就像是:

System.setProperty("illegal-access", "deny");
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

建议使用JVM选项的所有相关答案,我想从代码中关闭它.那可能吗?

澄清 - 我的问题是关于从代码中转发此警告而不是通过类似问题中所述的JVM参数/标志.

java jvm netty java-9

50
推荐指数
6
解决办法
5万
查看次数

具有德语语言环境的SimpleDateFormat - Java 8与Java 10+

我在遗留应用程序中有代码和测试用例,可归纳如下:

@Test
public void testParseDate() throws ParseException {
    String toParse = "Mo Aug 18 11:25:26 MESZ +0200 2014";
    String pattern = "EEE MMM dd HH:mm:ss z Z yyyy";

    DateFormat dateFormatter = new SimpleDateFormat(pattern, Locale.GERMANY);
    Date date = dateFormatter.parse(toParse);

    //skipped assumptions
}
Run Code Online (Sandbox Code Playgroud)

该测试通过Java 8及以下版本.然而,随着Java 10向上,这导致了一个java.text.ParseException: Unparseable date: "Mo Aug 18 11:25:26 MESZ +0200 2014".

备案:另外de_DE,异常也抛出了语言环境 de_CH,de_AT,de_LU.

我知道使用JDK 9(JEP 252)更改了日期格式.但是,我认为这是破坏向后兼容性的颠覆性变化.摘录:

在JDK 9中,Unicode Consortium的公共区域设置数据存储库(CLDR)数据作为默认区域设置数据启用,因此您可以使用标准区域设置数据而无需任何进一步操作.

在JDK …

java simpledateformat java-8 java-9 java-10

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

在没有实际负载增加的情况下,Java 9 G1工作约6小时后为什么会出现性能下降?

我将1个实例(2个vCPU,2GB RAM,加载〜4k req/sec)切换到Java 9(来自最新的Java 8).有一段时间,一切都很好,CPU使用率和以前一样.然而,在大约6小时后,CPU消耗无缘无故地增加了4%(从21%增加到25%).我没有流量峰值,没有内存消耗增加,没有度量标准更改(我在代码中的每个方法都有计数器).没有.

我离开这个实例大约12个小时,期待它会恢复原状.但没有改变.它开始消耗更多的CPU.

top命令显示实例的CPU峰值比Java服务器进程通常多.我最近读到G1不适合高吞吐量.所以我得出结论,理由可能在G1.

我重新启动了实例:

java -XX:+UseParallelGC -jar server-0.28.0.jar
Run Code Online (Sandbox Code Playgroud)

经过约20小时的监测,一切都和以前一样好.与前几天相比,CPU消耗量达到了21%的水平.

Java 9部署后的CPU使用率(6小时):

在此输入图像描述

7小时后CPU增加+ 12小时"未触及"(7d比例):

在此输入图像描述

CPU后 - XX:+UseParallelGC(24h刻度):

在此输入图像描述

所以我的问题是 - 是G1的预期行为吗?其他人看到类似的东西?

Ubuntu 16.04 x64

java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)

编辑03.01.2019

试图在java 10.0.2上使用G1运行一个相同的服务器:

java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

UseParallelGC服务器重启后,G1消耗的CPU比刚刚多40%.

java performance garbage-collection g1gc java-9

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

运行 Zeppelin 时无法识别 VM 选项“MaxPermSize=512m”

当我尝试通过以下任一方式运行 Zeppelin 时

bin/zeppelin.sh
Run Code Online (Sandbox Code Playgroud)

或者

bin/zeppelin-deamon.sh start
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息。

Unrecognized VM option 'MaxPermSize=512m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

我的系统(Ubuntu 16.04)上安装了 Java 9。

$ java -version                         
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java ubuntu java-8 java-9 apache-zeppelin

48
推荐指数
4
解决办法
11万
查看次数

如何从Java Web Start(JDK 8)升级到jlink(JDK 9+)以获取自动更新应用程序?

Java 8和早期版本具有Java Web Start,它在我们更改应用程序时自动更新应用程序.Oracle建议用户迁移到jlink,因为这是新的Oracle技术.到目前为止,这听起来不错.这带来了许多好处:

  1. Windows,Mac和Linux上的本机代码
  2. 代码的模块化(尽管Proguard也这样做)
  3. 使用新的,支持的技术.

问题:我找不到使用jlink自动更新的规范Java解决方案.

有人会认为Java Web Start可以继续使用,特别是如果随便读取这个文档.请注意Java Web Start继续显着列出的事实.但美中不足的是:Oracle正在弃用Java Web Start.它将在JDK 11中删除.那么,正式的道路是什么呢?如果不这样做,人们会采用标准方式吗?

出于本问题的目的,以下内容超出范围:

  • 每年向拥有功能丰富的企业解决方案的人支付巨额资金.要分发的应用程序已经打包到一个小于50MB的jar中.
  • 强制用户运行InstallShield样式应用程序以重新安装新版本,然后在每次推送更新时手动卸载旧版本.那是1990年代的.
  • 将整个应用程序移植为webapp,重写UI和客户端逻辑以适应浏览器并处理所需的所有不兼容性.该应用程序的作者致力于GWT并确切知道Web浏览器的功能.不幸的是,他们也知道所需的努力程度.
  • 允许用户继续运行旧版本的应用程序.这也是1980年代的事情.现代应用程序可以快速更新,并且支持所发布的每个应用程序版本都不可行.这就是我父亲的COBOL应用程序必须处理的事情,他并不喜欢它.我希望技术进步.
  • 继续使用Java Web Start.除非Oracle改变主意,否则Java Web Start是一种注定要失败的技术.

java deployment java-web-start jlink java-9

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