关于Java 9中的非法反射访问存在很多问题.
现在我找不到的是因为所有谷歌都在努力解决错误信息,实际上是非法的反射访问.
所以我的问题很简单:
什么定义非法反射访问以及什么情况触发警告?
我已经收集到它与Java 9中引入的封装原则有关,但它们如何挂在一起以及什么触发警告在什么情况下我找不到解释.
在其他更改中,JDK 11为java.lang.String类引入了6种新方法:
repeat(int)- 重复String的次数与int参数提供的次数相同lines() - 使用Spliterator延迟提供源字符串中的行isBlank() - 指示String是否为空或仅包含空格字符stripLeading() - 从头开始删除空白区域stripTrailing() - 从末端移除空白区域strip() - 从字符串的开头和结尾删除空白区域 特别是,strip()看起来非常相似trim().根据这篇文章, strip*()方法旨在:
String.strip(),String.stripLeading()和String.stripTrailing()方法修剪目标字符串的正面,背面或正面和背面的空白[由Character.isWhiteSpace()确定].
String.trim() JavaDoc声明:
/**
* Returns a string whose value is this string, with any leading and trailing
* whitespace removed.
* ...
*/
Run Code Online (Sandbox Code Playgroud)
这几乎与上面的引用相同.
究竟之间的差别String.trim(),并String.strip()因为Java的11?
我认为这应该是一个非常简单的问题.但不知何故,我无法在谷歌找到答案.
假设我有2个字符串列表.首先包含"字符串A"和"字符串B",第二个包含"字符串B"和"字符串A"(按顺序通知差异).我想用JUnit测试它们以检查它们是否包含完全相同的字符串.
是否有任何断言检查忽略顺序的字符串的相等性?对于给定的示例org.junit.Assert.assertEquals抛出AssertionError
java.lang.AssertionError: expected:<[String A, String B]> but was:<[String B, String A]>
Run Code Online (Sandbox Code Playgroud)
解决方法是首先对列表进行排序,然后将它们传递给断言.但我希望我的代码尽可能简单和干净.
我使用Hamcrest 1.3,JUnit 4.11,Mockito 1.9.5.
我学习的DropWizard指标库(原科达硬朗指标),我很困惑,当我应该使用到MetersVS Timers.根据文件:
仪表:仪表测量一组事件发生的速率
和:
计时器:计时器基本上是事件类型持续时间的直方图和其发生率的计量表
基于这些定义,我无法辨别它们之间的区别.令我感到困惑的是,Timer没有像我期望的那样使用它.对我而言,Timer就是这样:一个计时器; 它应该测量a start()和之间的时间差stop().但似乎Timers也可以捕捉事件发生的速度,感觉就像是踩到了Meters脚趾.
如果我能看到每个组件输出的示例,这可能有助于我理解何时/何处使用其中任何一个.
在最近几个主要版本的Java的每次迭代中,似乎都有新的方法来管理并发任务.
在Java 9中,我们有Flow API,类似于RxJava的Flowable API,但Java 9有一组更简单的类和接口.
Java 9
有Flow.Publisher,Flow.Subscriber,Flow.Processor,Flow.Subscription,和SubmissionPublisher,这就是它.
RxJava
拥有全包的流API状类,即io.reactivex.flowables,io.reactivex.subscribers,io.reactivex.processors,io.reactivex.observers,和io.reactivex.observables这似乎做同样的事情.
这两个库之间的主要区别是什么?为什么有人会使用Java 9 Flow库而不是更多样化的RxJava库,反之亦然?
为了尝试深入理解java流和分裂器,我对spliterator特性有一些微妙的问题:
Q1:Stream.empty()vsStream.of()(没有args的Stream.of())
Stream.empty():SUBSIZED,SIZEDStream.of(): SUBSIZED,IMMUTABLE,SIZED,ORDERED为什么Stream.empty()没有相同的特征Stream.of()?请注意,与Stream.concat()(特别是没有ORDERED)一起使用时会产生影响.我会说不Stream.empty()应该只有IMMUTABLE和ORDERED,还有DISTINCT和NONNULL.也很有意义Stream.of()仅具有一个参数DISTICT.
Q2:LongStream.of()没有NONNULL
刚注意到NONNULL不可用LongStream.of.不是NONNULL所有LongStreams,IntStreams和DoubleStreams 的主要特征吗?
Q3:LongStream.range(,)vsLongStream.range(,).boxed()
LongRange.range(,):SUBSIZED,IMMUTABLE,NONNULL,SIZED,ORDERED,SORTED ,DISTINCTLongStream.range(,).boxed():SUBSIZED,SIZED,ORDERED为什么.boxed()失去所有这些特征?它不应该失去任何.
我明白.mapToObj()可以失去NONNULL,IMMUTABLE和DISTICT,但.boxed()......没有意义.
Q4:.peek()输掉IMMUTABLE和NONNULL
LongStream.of(1): …
需求和需要模块声明中的传递模块语句有什么区别?
例如:
module foo {
requires java.base;
requires transitive java.compiler;
}
Run Code Online (Sandbox Code Playgroud) 今天我尝试了最新的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) ERROR GServerHandler - java.io.IOException: Connection reset by peer
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(Unknown Source)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.read(Unknown Source)
at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
该日志来自使用netty实现的游戏服务器.什么可以导致这个例外?
java ×9
java-9 ×5
java-module ×2
string ×2
arrays ×1
assertion ×1
dropwizard ×1
ioexception ×1
java-11 ×1
java-8 ×1
java-stream ×1
junit ×1
maven ×1
maven-3 ×1
metrics ×1
module-info ×1
netty ×1
requires ×1
rx-java ×1
rx-java2 ×1
spliterator ×1
strip ×1
tcp ×1
timer ×1
trim ×1
unit-testing ×1