Java 11isBlank()为java.lang.String类添加了一个新的实例方法 .
现有方法isEmpty和新增isBlank()方法之间的基本区别是什么?
我知道HttpClientBuilder您可以使用 Apache调用useSystemProperties(),如果传递为,它将创建一个SSLContext从javax.net.ssl.keyStore(和信任库)配置的客户端JAVA_OPTS:
try (CloseableHttpClient client = HttpClientBuilder.create().useSystemProperties.build()) {
// If javax.net.ssl props are set, make requests that require client auth
// Otherwise make regular requests
}
Run Code Online (Sandbox Code Playgroud)
我想用 Java 11 做一些类似的事情HttpClient。这样做的原因是在我的用例中,我将密钥存储和信任存储视为可选的,并且不必在我的代码中检查它们的存在会很好。基本上,我想SSLContext根据JAVA_OPTS它们是否存在来设置;否则只使用"Default"上下文。
似乎当我使用自定义序列化程序时,它@JsonInclude(Include.NON_NULL)会被完全忽略。
我的要求是不要序列化值为空的键。我还想通过为多值添加空格分隔符来格式化字符串SortedSet(这就是我创建自定义序列化程序的原因)
没有任何空值的电流输出示例
{
"age": "10",
"fullName": "John Doe"
"email":"doe@john.com john@doe.com test@gmail.com"
}
Run Code Online (Sandbox Code Playgroud)
具有空值的电流输出示例
{
"age": "10",
"fullName": "John Doe"
"email":null
}
Run Code Online (Sandbox Code Playgroud)
电子邮件为空时的预期输出:
{
"age": "10",
"fullName": "John Doe"
}
Run Code Online (Sandbox Code Playgroud)
DTO
@AllArgsConstructor
@Builder
@Data
@NoArgsConstructor
@ToString
@SuppressWarnings("PMD.TooManyFields")
public class User {
@JsonProperty("age")
private String age;
@JsonProperty("firstName")
private String name;
@JsonProperty("email")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonSerialize(using = MultiValuedCollectionSerializer.class)
private SortedSet<String> email;
}
Run Code Online (Sandbox Code Playgroud)
自定义序列化程序
public class MultiValuedCollectionSerializer extends JsonSerializer<Collection> {
@Override
public void serialize(final Collection inputCollection,
final JsonGenerator jsonGenerator,
final SerializerProvider …Run Code Online (Sandbox Code Playgroud) 服务器环境:Weblogic 10.3.6,JDK 1.7
我有一个使用JDK 7运行的简单工作 Java SE 客户端应用程序。在客户端,我正在对上面提到的资源托管服务器进行非常简单的 JNDI 外观。
ClassPath 中的罐子: wlthint3client.jar
public static void main(String[] args) throws Exception {
Hashtable t = new Hashtable();
t.put(InitialContext.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
t.put(InitialContext.PROVIDER_URL, "t3://localhost:7003/");
InitialContext ic = new InitialContext(t);
String jndiName = "weblogic.jdbc.DataSource.Workflow";
Object obj = ic.lookup(jndiName);
System.out.println("Found it");
}
Run Code Online (Sandbox Code Playgroud)
我必须将我的工作 Java SE 客户端应用程序从JDK 7升级到 JDK 11。服务器环境保持不变。
一旦我将客户端升级到 JDK 11,我就会遇到以下错误。这是意料之中的,因为 corba jar 已从 JDK 11 中移出。
Exception in thread "main" java.lang.NoClassDefFoundError: org/omg/CORBA/SystemException
at weblogic.jndi.WLInitialContextFactoryDelegate.<clinit>(WLInitialContextFactoryDelegate.java:202)
at weblogic.jndi.spi.EnvironmentManager$DefaultFactoryMaker.<clinit>(EnvironmentManager.java:27) …Run Code Online (Sandbox Code Playgroud) 我正在将应用程序从jdk 8迁移到11,我可以看到ZonedDateTime更改是关于夏时制的行为。JDK8
ZonedDateTime parse = ZonedDateTime.parse("2037-05-10T19:15:00.000+01:00[Europe/Paris]");
System.out.println(parse);
Run Code Online (Sandbox Code Playgroud)
输出:2037-05-10T19:15 + 02:00 [Europe / Paris]
JDK11 / 12
ZonedDateTime parse = ZonedDateTime.parse("2037-05-10T19:15:00.000+01:00[Europe/Paris]");
System.out.println(parse);
Run Code Online (Sandbox Code Playgroud)
2037-05-10T20:15 + 02:00 [欧洲/巴黎]
有人可以向我解释为什么他们会改变这种行为吗?
最好的祝福,
作为开发人员,我希望从Oracle(Oracle JDK)安装JDK11二进制分发版,并从Oracle获得7年(LTS)的免费更新。这可以免费吗?
我认为这是不可能的,因为从JDK11出现在Oracle网站上开始的6个月后,我将无法从Oracle网站下载它(具有任何最新更新的Oracle JDK 11版本,如11.0.2),并且我将无法下载无需Oracle付费订阅就可以找到(在Oracle网站上)此类更新的下载位置(对于OracleJDK)。我想我可以搜索OpenJDK 11付费的替代品,以获得超过6个月的更新(例如Red Hat),但是我不知道有任何免费替代品-请告知!
我知道以下内容(如果我输入错了,请纠正我):
有一个带有OpenJDK 更新的奇怪站点(Mercurial回购?),但是我似乎没有任何实用的方法来使用该站点。
我认为社区中存在一些讨论,现在该如何处理OpenJDK版本的更新-谁以及如何做。但是今天没有人这样做。
另外,RedHat 似乎为OpenJDK提供了一些更新,但是我不了解整个情况。我猜想,如果我为RHEL付费,那么他们会更新我的JDK作为RHEL的一部分(这就像购买Oracle JDK,但可能更便宜,我不知道。此外,RHEL似乎使用OpenJDK,而不是OracleJDK。确保OpenJDK和OracleJDK现在完全相同,正如Oracle声称的那样)。
关于OpenJDK的更新(不存在这样的更新?!),我不明白这一点-如果甲骨文声称,它是Oracle在谁的网站jdk.java.net OpenJDK的提供释放(参见(!)(!)prooflink),为什么甲骨文在至少6个月内还没有为这些OpenJDK提供更新(dk.java.net站点上没有此类更新)?OracleJDK和OpenJDK现在“完全相同”,Oracle仍将OracleJDK更新为6个月-为什么不同时将OpenJDK也更新为6个月?

PS 看起来像甲骨文承诺将有助于安全更新的OpenJDK 季度(而不是任何其他更新:性能更新,稳定性更新,如Oraccle JDK,如果我付的“Java SE认购”,其中包括更新和在线/电话支持24/7在服务器或云中每个处理器每月25美元):

同样有趣的是,Mark Rotteveel(请参见注释)写道,JDK源代码只有一个地方:(可能是http://hg.openjdk.java.net/ 我不知道与http:/的区别/openjdk.java.net/),甚至Oracle(及其他)也从那里获取代码: …
我正在尝试使用 Scene Builder 解决我正在使用 javafx 11 和 java11 处理的计算器项目的问题。我试图找出一种方法,让计算器上的按钮在从键盘输入相应的值时改变颜色。是否有解决此问题的方法或 onKeyPressed 等类型的解决方案?
当用户用鼠标单击按钮时,我能够使按钮改变颜色(变为绿色)。这是在我的 css 样式表中完成的。我尝试向控制器类中的 onKeyReleased 方法添加一个方法,并且可以通过这种方式更改背景,但无法确定一种在不导致 UI 延迟的情况下及时更改颜色的方法。我希望 UI 更改类似于大多数计算器(例如标准 Windows 计算器)的颜色。这是用户按住键并改变颜色的地方,当释放键时它又变回。
//main.java
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root =
FXMLLoader.load(getClass().getResource("calculator.fxml"));
primaryStage.getIcons().add(new Image("CALC.png"));
primaryStage.setTitle(" TS Calculator");
primaryStage.setScene(new Scene(root, 250, 375));
primaryStage.setResizable(true);
primaryStage.setMinHeight(375);
primaryStage.setMinWidth(250);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
/CSS
Button{
-fx-background-color: black;
-fx-text-align: …Run Code Online (Sandbox Code Playgroud) 我试图在一个简单的java项目中使用swing API,其中需要在module-info.java中导入javax.swing包
我在 Eclipse IDE 上使用 openJDK-11
module ml.garba.testeur {
requires javax.swing;
}
Run Code Online (Sandbox Code Playgroud)
这是 JFrame 实例
package ml.garba.testeur.vue;
import javax.swing.JFrame;
public class Fenetre_Testeur extends JFrame {
}
Run Code Online (Sandbox Code Playgroud)
似乎swing 包的导入不起作用。
我需要帮助
爪哇 11
JAVA_HOME : C:\Program Files\Java\jdk-11.0.4
Run Code Online (Sandbox Code Playgroud)
我能够使用以下命令在 cmd 中找到 Java 版本:
java --version //successfully executed
java -version //successfully executed
Run Code Online (Sandbox Code Playgroud)
爪哇 8
JAVA_HOME : C:\Program Files (x86)\Java\jdk1.8.0_231
Run Code Online (Sandbox Code Playgroud)
我能够使用以下命令在 cmd 中找到 Java 版本:
java -version //successfully executed
Run Code Online (Sandbox Code Playgroud)
虽然我无法通过--version命令找到 java 版本
java --version //not successfully executed
Run Code Online (Sandbox Code Playgroud)
为什么我在执行时收到无法创建 Java 虚拟机的错误--version,或者jdk 8 中没有此命令选项?如果它是在 jdk 11 中添加的,那么它在 doc 中的哪里提到了?
当我试图在我的自定义 JRE 中找到需要链接的 Java 模块时,我确实从jdeps工具中获得了一个 NPE :
marc$ jdeps --module-path $JAVA_HOME/jmods --print-module-deps --multi-release 11 target/blha/jx1-0.0.1-SNAPSHOT/BOOT-INF/lib/*.jar
Exception in thread "main" java.lang.NullPointerException
at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.requiresTransitive(ModuleGraphBuilder.java:124)
at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.buildGraph(ModuleGraphBuilder.java:110)
at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.reduced(ModuleGraphBuilder.java:65)
at jdk.jdeps/com.sun.tools.jdeps.ModuleExportsAnalyzer.modules(ModuleExportsAnalyzer.java:124)
at jdk.jdeps/com.sun.tools.jdeps.ModuleExportsAnalyzer.run(ModuleExportsAnalyzer.java:97)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask$ListModuleDeps.run(JdepsTask.java:1023)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:560)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:519)
at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)
Run Code Online (Sandbox Code Playgroud)
知道如何找到我需要链接到此 Spring Boot 项目的自定义 JRE 的所有模块吗?