标签: java-10

在java 10中使用局部变量类型推断的限制

Java 10引入了局部变量类型推断功能JEP-286.

我们可以使用Local-Variable Type Inference var作为保留类型名称

但是使用它有一些限制.

有人可以总结一下我将无法使用var的情况吗?

java java-10

6
推荐指数
1
解决办法
1436
查看次数

线程主java.lang.exceptionininitializerError中的异常当安装没有hadoop的spark时

我正在尝试安装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?

非常感谢先进.

java apache-spark java-10

6
推荐指数
1
解决办法
2797
查看次数

Java 10'var'和继承

在查看此处显示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)

java var java-10

6
推荐指数
1
解决办法
309
查看次数

IntelliJ IDE(社区版)不支持var声明Java 10

我已经安装了2018.1版本IntelliJ IDEA的(社区版),这增加了对支持Java的10.

当我尝试使用新的"var"来键入局部变量时,IDE会用红色和可爱的短语突出显示它:"无法解析类型"var".请参阅附件 varRed

我已经阅读了另一篇文章,该文章发生了与成员提供可能解决方案完全相同的问题/sf/answers/3480381411/

我也是这样做的,我已经为Java语句创建了该类型的实时模板,但它仍然不起作用.

有些人对此有任何建议吗?我将感谢你的帮助

提前致谢.
在此输入图像描述

java var intellij-idea java-10

6
推荐指数
1
解决办法
3134
查看次数

Java:当秒和毫秒都为 0 时,DateTimeFormatter 无法解析时间字符串?

基本上,我使用以下代码将字符串解析为 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 format date java-time java-10

6
推荐指数
2
解决办法
2826
查看次数

java 10 httpclient孵化器GET请求在node.js服务器上失败

我一直在试验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 …

java httpclient java-10

6
推荐指数
1
解决办法
251
查看次数

模块已被弃用并标记为删除

我已添加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而不是该模块的内置/弃用版本?

非常感谢!

java java-9 java-10 java-module

6
推荐指数
1
解决办法
415
查看次数

如何使用列表在地图中分组时过滤年龄

类似我刚才的问题在这里,该用户我有对象是这些

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 grouping filter java-stream java-10

6
推荐指数
2
解决办法
145
查看次数

如果您使用G1 GC,为什么推荐使用Java 10?

Java 10通过迭代改进其现有算法来减少Full GC暂停时间.

-XX:ParallelGCThreads
Run Code Online (Sandbox Code Playgroud)

据我所知,G1不会与我们的应用程序同时运行其收集周期.它仍将定期暂停应用程序,并且随着堆大小的增加,Full GC暂停会增加. 

那它如何提高性能呢?有谁能解释一下?

java garbage-collection g1gc java-10

6
推荐指数
2
解决办法
712
查看次数

JShell访问在jshell实例外部定义的变量

从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-9 java-10 jshell java-11

6
推荐指数
1
解决办法
112
查看次数