在具有 60GB 内存(或更多)的机器上运行 OpenJDK 11 时,MaxRAMPercentage
只允许我分配最多 30GB 左右的内存
。
这正常工作:
>~# java -XX:MaxRAMPercentage=10 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 5.90G
Using VM: OpenJDK 64-Bit Server VM
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Debian-1bpo91)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Debian-1bpo91, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
但是当百分比应该产生超过 30G 的堆大小时,我得到:
>~# java -XX:MaxRAMPercentage=75 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 29.97G
Using VM: OpenJDK 64-Bit Server VM
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Debian-1bpo91)
OpenJDK 64-Bit …
Run Code Online (Sandbox Code Playgroud) 我已经构建executable jar
使用NetBeans IDE 11.0
但是当我打开 jar
使用时:
hemlata@hemlata-pc:~/NetBeansProjects/Sizing/dist$ java -jar Sizing.jar
Run Code Online (Sandbox Code Playgroud)
我越来越
Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)
我使用的是OpenJDK 11
和OpenJFX 11
上Debian 10
我已经添加modules
了 vm option
--module-path /usr/lib/jvm/openjfx11/lib/ --add-modules javafx.controls,javafx.fxml
Run Code Online (Sandbox Code Playgroud)
但这不是问题。
那么如何配置JavaFX runtime components
缺少的呢?
我的应用程序正在使用OpenJDK 11,但失败,但出现以下异常:
Caused by: java.lang.IllegalArgumentException: Unsupported CipherSuite: SSL_RSA_WITH_AES_256_CBC_SHA256
at java.base/sun.security.ssl.CipherSuite.validValuesOf(CipherSuite.java:916)
at java.base/sun.security.ssl.SSLSocketImpl.setEnabledCipherSuites(SSLSocketImpl.java:302)
at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.makeSocketSecure(RemoteTCPConnection.java:2084)
Run Code Online (Sandbox Code Playgroud)
我不共享任何代码,因为我认为问题不存在。我需要以某种方式解决此异常。
是否可以将JRE配置为支持此特定CipherSuite?
我有一个用 openJDK (Amazon Correto 11) 和 openJFX 编写的应用程序。
当我在本地运行应用程序时 - 一切正常。但是当我从网络共享执行应用程序时出现异常:
java.lang.ExceptionInInitializerError
at java.base/javax.crypto.JceSecurityManager.<clinit>(JceSecurityManager.java:65)
at java.base/javax.crypto.Cipher.getConfiguredPermission(Cipher.java:2624)
at java.base/javax.crypto.Cipher.getMaxAllowedKeyLength(Cipher.java:2646)
at java.base/sun.security.ssl.SSLCipher.isUnlimited(SSLCipher.java:540)
at java.base/sun.security.ssl.SSLCipher.<init>(SSLCipher.java:472)
at java.base/sun.security.ssl.SSLCipher.<clinit>(SSLCipher.java:174)
at java.base/sun.security.ssl.CipherSuite.<clinit>(CipherSuite.java:67)
at java.base/sun.security.ssl.SSLContextImpl.getApplicableSupportedCipherSuites(SSLContextImpl.java:348)
at java.base/sun.security.ssl.SSLContextImpl$AbstractTLSContext.<clinit>(SSLContextImpl.java:579)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at java.base/java.security.Provider$Service.getImplClass(Provider.java:1848)
at java.base/java.security.Provider$Service.newInstance(Provider.java:1824)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:168)
at org.apache.http.ssl.SSLContexts.createDefault(SSLContexts.java:51)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.getSocketFactory(SSLConnectionSocketFactory.java:194)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.getDefaultRegistry(PoolingHttpClientConnectionManager.java:115)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:122)
at com.mashape.unirest.http.options.Options.refresh(Options.java:72)
at com.mashape.unirest.http.options.Options.<clinit>(Options.java:46)
at com.mashape.unirest.http.HttpClientHelper.prepareRequest(HttpClientHelper.java:151)
at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:131)
at com.mashape.unirest.request.BaseRequest.asString(BaseRequest.java:56)
at myapp.util.MyTaxNumberValidator$3.run(MyTaxNumberValidator.java:185)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:120)
... 27 more …
Run Code Online (Sandbox Code Playgroud) 我最初在 Ubuntu 18.04 上安装了 default-jdk 和 default-jre。
尝试为朋友托管 Minecraft 服务器,但出现此处发现的错误
我跟着评注的建议遵循这个建议重新安装,而不是11版以上版本,Java版本8这里是幸福
sudo rm -r /usr/lib/jvm/java-11-oracle
Run Code Online (Sandbox Code Playgroud)
但作为一个错误,我删除了该文件夹中的所有文件,只留下了两个目录
从那以后我尝试使用重新安装java sudo apt-get install default-jdk ; sudo apt-get install default-jre
并且它们安装得很好,但是以 root 或用户身份运行 java -version 返回:
找不到命令“java”,但可以使用以下命令安装:
我已经在 askubuntu、digitalocean 和 stackoverflow 上搜索了一些答案,但找不到任何可以解决此问题的方法。我也问过我的室友,他是一位经验丰富的计算机科学专业的,过去曾广泛使用过ubuntu,他也没有找到解决办法。有没有人遇到过这个问题?
我感谢任何和所有的回应
我正在构建一个桌面应用程序。我使用 ProGuard 并进行以下配置:
@proguard_jmods.cfg
#-dontshrink
-dontoptimize
#-dontobfuscate
-repackageclasses ''
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*,Signature,Annotation,InnerClasses,EnclosingMethod,SourceFile,LineNumberTable
-adaptresourcefilenames
-dontnote
-dontwarn com.ctc.wstx.**,com.github.**,com.jolbox.bonecp.**,com.mchange.v2.**,com.sun.istack.**,com.sun.tools.**,com.healthmarketscience.**,com.healthmarketscience.**,org.codehaus.**,org.iq80.snappy.**,com.sun.xml.**,com.thoughtworks.xstream.**,de.l3s.boilerpipe.**,javax.activation.**,javax.transaction.**,net.sf.ehcache.**,opennlp.tools.util.**,org.apache.cxf.**,org.apache.log4j.**,org.apache.poi.**,org.apache.sis.**,org.apache.**,org.dom4j.**,org.codehaus.plexus.**,javax.enterprise.**,org.glassfish.**,org.jdesktop.**,org.quartz.**,com.sun.org.**,javax.imageio.metadata.**,javax.xml.**,javax.jws.**,org.w3c.dom.**,org.xml.sax.**,au.com.bytecode.**,com.fasterxml.jackson.**,com.google.common.**,com.google.gson.**,com.googlecode.mp4parser.**,com.itextpdf.**,com.mchange.v1.**,com.microsoft.schemas.**,com.strobel.assembler.**,com.strobel.compilerservices.**,examples.RCallerScriptEngineExample1.**,examples.RCallerScriptEngineExample2.**,examples.RCallerScriptEngineExample2.**,examples.RCallerScriptEngineExample3.**,javassist.util.HotSwapAgent.**,javassist.util.HotSwapper.**,javax.rmi.CORBA.**,javax.rmi.CORBA.**,javax.rmi.PortableRemoteObject.**,org.bouncycastle.**,org.cyberneko.**,org.eclipse.jetty.**,org.etsi.uri.**,org.jboss.com.**,org.jdom2.**,org.jfree.**,org.joda.time.**,org.terracotta.quartz.**,ucar.nc2.grib.**,javax.imageio.metadata.**,com.jmatio.io.**,javax.script.**,com.sun.**,java.rmi.**,opennlp.tools.sentiment.**,java.lang.**,java.util.**,sun.misc.Unsafe.**,sun.**,org.w3.**,net.sf.ehcache.distribution.**,org.apache.http.**,org.apache.any23.**,com.graphbuilder.curve.**,com.strobel.decompiler.**,com.uwyn.jhighlight.**,rg.codehaus.stax2.**,org.openxmlformats.schemas.**,org.springframework.**,org.slf4j.**,com.mysql.**,org.pushingpixels.**,org.hibernate.**,org.jboss.**,net.bytebuddy.**,javax.persistence.**,org.eclipse.**,java.awt.datatransfer.**,java.sql.**,org.objectweb.**,org.apache.any23.**
-ignorewarnings
-verbose
-printseeds seed
# Keep - Applications. Keep all application classes, along with their 'main' methods.
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
-keep interface *
-keepnames class ** implements com.xxx.xx.utils.ISerialisable
-keepclassmembers class ** implements com.xxx.xx.utils.ISerialisable {
<fields>;
}
-keep,allowshrinking class ** extends com.xxx.xx.utils.ISerialisable
# Keep - Applications. Keep all application classes, along with their 'main' methods.
-keepclasseswithmembers public …
Run Code Online (Sandbox Code Playgroud) 我正在从 java 8 迁移到 openjdk-11。现在邮件(使用 smtp 发送电子邮件)不再需要做更多的工作。该项目在Win10上使用openjdki 11和jakarta.mail-2.0.0。后来我添加了jakarta.activation-api-2.0.0。
Properties props = new Properties();
props.put("mail.smtp.host", host);
Session session = Session.getInstance(props);
session.setDebug(debug);
try {
// create a message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
message.setSubject("Jakarta Mail API Test");
message.setSentDate(new Date());
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText("This is a message body.\nHere's line two.");
MimeBodyPart mbp2 = new MimeBodyPart();
mbp2.setText("This is the text in the message attachment.", "us-ascii");
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
message.setContent(mp);
Transport.send(message);
} catch (MessagingException mex) {
mex.printStackTrace(); …
Run Code Online (Sandbox Code Playgroud) 我一直在使用EWS(Exchange Web Service)从Java 8中的共享邮箱中读取电子邮件。
升级到Java 11 (Open JDK 11/Zulu Java 11)后,在阅读电子邮件时遇到异常。
这是例外:
java.lang.NoClassDefFoundError: javax/xml/ws/http/HTTPException在 Microsoft.exchange.webservices.data.core.ExchangeService.internalFindFolders(ExchangeService.java:370) ~[ews-java-api-2.0.jar:na]
我正在尝试构建jdk-11+8
以读取java.nio.ByteBuffer
Linux 的生成源代码。
我根据文档安装了所有依赖项,然后成功运行configure
。
然而,当我运行时make
,我收到一个关于缺少 Java 包的奇怪错误,这看起来像是引导问题。
git clone https://github.com/openjdk/jdk.git
pushd jdk
bash configure
...
The existing configuration has been successfully updated in
/home/ubuntu/Code/jdk/build/linux-x86_64-normal-server-release
using default settings.
Configuration summary:
* Debug level: release
* HS debug level: product
* JDK variant: normal
* JVM variants: server
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64
* Version string: 11-internal+0-adhoc.ubuntu.jdk (11-internal)
Tools summary:
* Boot JDK: openjdk version "11.0.9.1" 2020-11-04 …
Run Code Online (Sandbox Code Playgroud) 我正在根据语言和地区设置区域设置,并希望使用此设置解析 BigDecimal 数字。但我面临的问题是两个 OpenJDK 的分组分隔符不同。
下面是我尝试使用 OpenJDK 8 和 OpenJDK 11 执行的示例代码。
Locale l = new Locale.Builder().setLanguage("de").setRegion("CH").build();
System.out.println("Locale set to " + Locale.getDefault(Locale.Category.FORMAT));
DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance(Locale.getDefault(Locale.Category.FORMAT));
System.out.println("Grouping Separator: " + nf.getDecimalFormatSymbols().getGroupingSeparator());
Run Code Online (Sandbox Code Playgroud)
输出
OpenJDK 8
---------
Locale set to de_CH
Grouping Separator: '
OpenJDK 11
----------
Locale set to de_CH
Grouping Separator: ’
Run Code Online (Sandbox Code Playgroud)
我需要一个通用的解析方法,其中分组分隔符返回相同,以便设计我的单元测试很容易,并且无论是使用 java 8 还是 11 运行它都会通过。请协助。
我尝试运行 java awt 程序,但出现以下错误:
我正在使用 lubuntu 18.04 和 openjdk 11
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
at java.base/java.lang.Runtime.load0(Runtime.java:768)
at java.base/java.lang.System.load(System.java:1837)
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.base/java.lang.System.loadLibrary(System.java:1873)
at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1399)
at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1397)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1396)
at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1429)
at java.desktop/java.awt.Component.<clinit>(Component.java:621)
Run Code Online (Sandbox Code Playgroud)
这是我在编辑器中编写的代码:
class calculator extends Frame{
calculator(){
Button b=new Button("click me");
b.setBounds(30,100,80,30);
add(b);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public static void main(String args[]){
calculator f=new calculator();
}}
Run Code Online (Sandbox Code Playgroud)
我可以在 openjdk …
我正在开发一个使用 JDK8 运行的项目,我们希望将其迁移到 OpenJDK11。
但是,有一些遗留代码可以在运行时动态创建枚举(使用反射和sun.reflect.*
包):
public class EnumUtil {
static Object makeEnum(...) {
...
enumClass.cast(sun.reflect.ReflectionFactory.getReflectionFactory() .newConstructorAccessor(constructor).newInstance(params));
}
}
Run Code Online (Sandbox Code Playgroud)
或者
// before, field is made accessible, the modifier too
sun.reflect.FieldAccessor fieldAccessor = sun.reflect.ReflectionFactory.getReflectionFactory().newFieldAccessor(field, false);
field.set(target, value);
Run Code Online (Sandbox Code Playgroud)
例如,假设我们有枚举AEnum
:
public enum AEnum {
; // no values at compile time
private String label;
private AEnum (String label) {
this.label = label;
}
Run Code Online (Sandbox Code Playgroud)
然后,我们添加这样的枚举值:
EnumUtil.addEnum(MyEnum.class, "TEST", "labelTest");
Run Code Online (Sandbox Code Playgroud)
最后,在运行时,我们有一个带有 label = labelTest 的值AEnum.TEST
(不是通过直接调用,而是通过)。Enum.valueOf
不幸的是,sun.reflect.*
OpenJDK11 中不再提供类。
我尝试过使用 …
我需要从源代码交叉编译这个 OpenJava 分支https://gitlab.com/gosjava/11/openjdk/-/tree/master/ - 对于 aarch64-linux-gnu devkit 目标:\n为此我安装了 java 10.0.2作为主机 JDK 然后运行“./configure”
\n\xe2\x94\x94\xe2\x94\x80$ ./configure \n...\nconfigure: Potential Boot JDK found at /home/katya/java is incorrect JDK version (Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); ignoring\nconfigure: (Your Boot JDK version must be one of: 10 11)\nchecking for javac... /home/katya/java/bin/javac\nchecking for java... /home/katya/java/bin/java\nconfigure: Found potential Boot JDK using java(c) in PATH\nconfigure: Potential Boot JDK found at /home/katya/java is incorrect JDK version (Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); ignoring\nconfigure: (Your Boot JDK version must be one …
Run Code Online (Sandbox Code Playgroud) openjdk-11 ×13
java ×12
java-11 ×5
azul-zulu ×1
enums ×1
jakarta-mail ×1
java-8 ×1
javafx ×1
jce ×1
linux ×1
locale ×1
maven ×1
openjdk-8 ×1
openjfx ×1
proguard ×1
reflection ×1
ubuntu-18.04 ×1