Java 10引入了局部变量类型推断功能JEP-286.
我们可以使用Local-Variable Type Inference var作为保留类型名称
但是使用它有一些限制.
有人可以总结一下我将无法使用var的情况吗?
我正在尝试安装spark2.3.0,更具体地说,它是spark-2.3.0-bin-hadoppo2.7
'D:\ spark\bin'已添加到环境变量PATH中.同时,安装了JDK-10.没有安装Hadoop.但谷歌说火花可以没有hadoop工作.
这是错误消息
C:\Users\a>spark-shell
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2464)
at org.apache.spark.SecurityManager.<init>(SecurityManager.scala:222)
at org.apache.spark.deploy.SparkSubmit$.secMgr$lzycompute$1(SparkSubmit.scala:393)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$secMgr$1(SparkSubmit.scala:393)
at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:401)
at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:401)
at scala.Option.map(Option.scala:146)
at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:400)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:170)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2
at java.base/java.lang.String.checkBoundsBeginEnd(Unknown Source)
at java.base/java.lang.String.substring(Unknown Source)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:52)
... 21 more
Run Code Online (Sandbox Code Playgroud)
任何人都知道我应该怎么做才能安装spark?
非常感谢先进.
在查看此处显示的var功能之后:
我在使用JDK 10设置Eclipse/IntelliJ IDEA IDE时遇到了困难,因此请求具有可用Java 10环境的Stack Overflow用户提供帮助.
考虑以下:
public class A {
public void someMethod() { ... }
}
public class B extends A{
@Override
public void someMethod() { ... }
}
...
...
...
var myA = new A(); // Works as expected
myA = new B(); // Expected to fail in compilation due to var being
// syntactic sugar for declaring an A type
myA = (A) (new B()); // Should work
myA.someMethod(); // …Run Code Online (Sandbox Code Playgroud) 我已经安装了2018.1版本的IntelliJ IDEA的(社区版),这增加了对支持Java的10.
当我尝试使用新的"var"来键入局部变量时,IDE会用红色和可爱的短语突出显示它:"无法解析类型"var".请参阅附件 varRed
我已经阅读了另一篇文章,该文章发生了与成员提供可能解决方案完全相同的问题/sf/answers/3480381411/
我也是这样做的,我已经为Java语句创建了该类型的实时模板,但它仍然不起作用.
有些人对此有任何建议吗?我将感谢你的帮助
提前致谢.

基本上,我使用以下代码将字符串解析为 LocalDateTime,它在大多数情况下都可以正常工作。
DateTimeFormatter dtformatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
Run Code Online (Sandbox Code Playgroud)
但是,我遇到秒和毫秒的情况00000,这是解析器失败并打印 aLocalDateTime 2018-03-01T09:16而不是2018-03-01T09:16:00.000.
System.out.println(LocalDateTime.parse("20180301091600000",dtformatter));
Run Code Online (Sandbox Code Playgroud)
(请注意,在我的代码中,我必须将字符串解析为LocalDateTime,进行一些比较,然后在最后打印LocalDateTime到 csv)
如何修复它以使其打印2018-03-01T09:16:00.000而不是打印2018-03-01T09:16?
仅供参考,我正在使用 jdk10。
我一直在试验Java 9/10孵化器中的HttpClient东西,并且有以下简单的代码(几乎从项目主页上被盗!):
URI uri = URI.create("http://192.168.1.102:8080/");
HttpRequest getRequest = HttpRequest.newBuilder()
.uri(uri)
.GET()
.build();
HttpResponse<String> response = client.send(getRequest,
HttpResponse.BodyHandler.asString());
System.out.println("response to get: " + response.body());
Run Code Online (Sandbox Code Playgroud)
如果它指向不是localhost的URL,我发现它工作正常,但如果我要求localhost(无论是名称为"localhost",172.0.0.1,还是本地主机的实际IP地址),它都会失败.错误很奇怪,整个堆栈跟踪都没有提到我的任何代码.
WARNING: Using incubator modules: jdk.incubator.httpclient
Exception in thread "main" java.io.EOFException: EOF reached while reading
at jdk.incubator.httpclient/jdk.incubator.http.Http1AsyncReceiver$Http1TubeSubscriber.onComplete(Http1AsyncReceiver.java:507)
at jdk.incubator.httpclient/jdk.incubator.http.SocketTube$InternalReadPublisher$ReadSubscription.signalCompletion(SocketTube.java:551)
at jdk.incubator.httpclient/jdk.incubator.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(SocketTube.java:728)
at jdk.incubator.httpclient/jdk.incubator.http.SocketTube$SocketFlowTask.run(SocketTube.java:171)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at jdk.incubator.httpclient/jdk.incubator.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalReadable(SocketTube.java:675)
at jdk.incubator.httpclient/jdk.incubator.http.SocketTube$InternalReadPublisher$ReadEvent.signalEvent(SocketTube.java:829)
at jdk.incubator.httpclient/jdk.incubator.http.SocketTube$SocketFlowEvent.handle(SocketTube.java:243)
at jdk.incubator.httpclient/jdk.incubator.http.HttpClientImpl$SelectorManager.handleEvent(HttpClientImpl.java:769)
at jdk.incubator.httpclient/jdk.incubator.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:731)
Run Code Online (Sandbox Code Playgroud)
有一个本地运行的服务器,我可以使用Web浏览器的简单请求连接到它.
有什么想法吗?
[编辑]我发现,我相信,这个项目的邮件列表.它被"混淆了"(它完全欺骗了我!)但显示为:net dash dev at openjdk dot java dot net我也会在那里发布,看看他们是否有任何输入.
[编辑2]我很确定这与localhost(每个原始标题)无关,但是与node.js/express协议协商(这是我正在使用的服务器因为它很容易实验) ).偶尔节点(例如,使用非LF终止的最后一行文本)似乎报告错误的内容长度,但这不是问题,因为失败仍然以正确的长度发生.我认为这可能是尝试将连接升级到HTTP/2.0的一个错误,但还不知道......
[编辑3]在浪费了太多的生命实验之后,我很确定node.js 8.11.1(以及表达4.13.4和body-parser …
我已添加requires transitive java.activation到我的module-info.java,但java-10正在给我一个编译器警告module-info.java: module java.activation has been deprecated and marked for removal,尽管我已经在我的Maven 上添加了对com.sun.activation:javax.activation:1.2.0(Automatic-Module-Name: java.activation)的依赖pom.xml.
我可以通过添加@SuppressWarnings("removal")到我的模块声明来解决这个问题,但我从不喜欢抑制我可以修复的警告.还有什么我可以做的事情来与编译器沟通我打算依赖第三方jar而不是该模块的内置/弃用版本?
非常感谢!
类似我刚才的问题在这里,该用户我有对象是这些
new User("ayush","admin",23)
new User("ashish","guest",19)
new User("ashish","admin",20)
new User("garima","guest",29)
new User("garima","super",45)
new User("garima","guest",19)
Run Code Online (Sandbox Code Playgroud)
现在我试图让这些用户知道不同年龄段的名称.但是我需要在一个threshold年龄之上过滤它们.我可以使用这个趋势
Map<String, List<Integer>> userNameAndAgeTrend = users.stream().collect(Collectors.groupingBy(user-> user.getName(), Collectors.mapping(u-> u.getAge(), toList())));
Run Code Online (Sandbox Code Playgroud)
这给了我{ashish=[19, 20], garima=[29, 45, 19], ayush=[23]}.但是在我使用这种分组的情况下,我无法使用阈值正确过滤列表,例如21年.有人可以帮忙吗?
另外,使用.filter(user -> user.getAge() > 21)没有为ashish提供映射,这也是我想要存储的.我可以在我的机器上安装Java10并尝试建议的解决方案.
Java 10通过迭代改进其现有算法来减少Full GC暂停时间.
-XX:ParallelGCThreads
Run Code Online (Sandbox Code Playgroud)
据我所知,G1不会与我们的应用程序同时运行其收集周期.它仍将定期暂停应用程序,并且随着堆大小的增加,Full GC暂停会增加.
那它如何提高性能呢?有谁能解释一下?
从jShell脚本内部,是否可以访问或注册也在创建JShell的代码中定义的变量?
当前,似乎没有机制可以访问或向Shell实例注册变量,或者从JShell内部不返回任何字符串类型(例如对象或lambda等)。
例如:
导入jdk.jshell.JShell;
导入jdk.jshell.JShellException;
导入jdk.jshell.SnippetEvent;
导入java.util.List;
公共班级主要{
公共静态void main(String [] args)抛出JShellException {
var localVar = 1;
JShell shell = JShell.create();
//如何在shell实例中注册localVar变量或从作用域访问变量
列表事件= shell.eval(“ var x = localVar;”);
SnippetEvent event = events.get(0);
System.out.println(“种类:” + event.snippet()。kind()+“,值:” + event.value());
}
}
java-10 ×10
java ×9
java-9 ×2
var ×2
apache-spark ×1
date ×1
filter ×1
format ×1
g1gc ×1
grouping ×1
httpclient ×1
java-11 ×1
java-module ×1
java-stream ×1
java-time ×1
jshell ×1