我试图扫描JEP-286关于本地类型推断.我看到这只适用于局部变量 - 理解.所以这确实有效:
public class TestClass {
public static void main(String [] args){
var list = new ArrayList<>();
list.add("1");
System.out.println(list.get(0)); // 1
}
}
Run Code Online (Sandbox Code Playgroud)
我确实看到这另一方面没有编译:
public class TestClass {
public var list = new ArrayList<>();
public static void main(String [] args){
}
}
Run Code Online (Sandbox Code Playgroud)
很明显它没有,因为JEP这样说.现在我的问题:
对于被宣布为var失败的公共/受保护成员,至少是IMO,这是完全合理的.但是为什么它不能编译,即使它是private?我只能假设你仍然可以通过反射获得该变量(我不能得到这样的局部字段)......并且获得该变量需要一个演员,好吧,一个非常困惑的演员可能.
我看到,java-10增加了一个构造函数IntSummaryStatistics(LongSummaryStatistics和DoubleSummaryStatistics)这4个参数是count,min,max和sum.
我理解为什么no-args构造函数存在,所以它将用于简化,如:
..stream().collect(Collectors.summarizingInt(Class::someFunction))
Run Code Online (Sandbox Code Playgroud)
这是有道理的,但为什么需要添加带有4个参数的构造函数?(我在自己的答案中做了一个假设,但如果不是这样的话,我很乐意收回它.)
最近我安装了IntelliJ IDEA的新版本(2018.1),它增加了对Java 10的支持.
但是当我尝试使用var(用于局部变量类型推断)时,我发现var代码完成列表中没有.(见下面的截图)
如果我继续输入,它将VarHandle作为该列表中的第一个建议.然后我必须撤消完成以恢复var.
我检查了项目设置,我使用JDK 10,语言级别也设置为10.代码var number = 1;编译得很好.我在IDE设置中找不到任何相关内容.
我究竟做错了什么?我只是想var不间断地使用声明.
如果我在我的Eclipse插件中将JavaSE-10指定为最小执行环境:
在Eclipse应用程序启动插件时出现以下错误:
org.osgi.framework.BundleException: Could not resolve module: org.treez.core [597]
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=10))"
Unresolved requirement: Require-Bundle: org.treez.javafxd3; visibility:="reexport"
-> Bundle-SymbolicName: org.treez.javafxd3; bundle-version="1.0.0.qualifier"; singleton:="true"
org.treez.javafxd3 [586]
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=10))"
at org.eclipse.osgi.container.Module.start(Module.java:444)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1613)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Run Code Online (Sandbox Code Playgroud)
我查了一下
我使用Oxygen.3a Release(4.7.3a)Build id:20180405-1200
=>这是eclipse equinox中的一个错误吗?
=>我还可以检查以解决此问题?
如果我从最小执行环境设置中删除JavaSE-10,我就可以启动Eclipse应用程序,并且该插件似乎工作正常.
当我导出插件时,我收到以下警告:
# 25.04.18, 12:25:40 MESZ
# Eclipse Compiler for Java(TM) v20180330-0919, 3.13.102, Copyright IBM Corp 2000, 2015. All rights reserved.
option -bootclasspath not …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下方式启动Jenkins:
java -jar jenkins.war
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
Run Code Online (Sandbox Code Playgroud)java.lang.UnsupportedClassVersionError: 54.0 at Main.main(Main.java:128)
在更新我的开发环境之后出现此问题,我切换到:
我们已将Java项目升级到JDK 10.运行构建脚本时,Javadoc会输出警告:
javadoc: warning - You have not specified the version of HTML to use.
The default is currently HTML 4.01, but this will change to HTML5
in a future release. To suppress this warning, please specify the
version of HTML used in your documentation comments and to be
generated by this doclet, using the -html4 or -html5 options.
Run Code Online (Sandbox Code Playgroud)
为了构建项目,我们使用gradle.我们如何-html5在gradle中指定HTML 5()?
到目前为止,我们文件的javadoc部分build.gradle相当简单:
javadoc {
include 'com/company/project/pkg/*'
}
Run Code Online (Sandbox Code Playgroud) 我在Windows Server 2016上有一个Java 10应用程序,它使用java.util.logging不断写入文件.在Windows文件资源管理器中,"上次修改"和"大小"列不会更新.按[F5]不会更新详细信息.DOS DIR给出了同样错误的答案.右键单击>属性>详细信息提供了一个甚至不同(和更旧)的答案.
只TYPE在文件的记事本中运行DOS 或打开/关闭(不保存),似乎导致文件资源管理器和DOS DIR更新.
我假设Java代码是正确的,flush()因为Windows Server 2008上的Java 8上的相同类导致文件资源管理器更新.另外,当运行TYPE和记事本时,我也看到与系统时钟匹配的带时间戳的记录,但在"上次修改"之后.
所以我假设Windows Server 2016有一些东西.任何想法要检查什么?
这是我的代码:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://127.0.0.1:8081/"))
.header("Host", "test.example.com")
.build();
client.send(request, HttpResponse.BodyHandlers.ofString());
Run Code Online (Sandbox Code Playgroud)
结果我看到上面的代码发送:
GET / HTTP/1.1
Connection: Upgrade, HTTP2-Settings
Content-Length: 0
Host: 127.0.0.1:8081
HTTP2-Settings: AAEAAEAAAAIAAAABAAMAAABkAAQBAAAAAAUAAEAA
Upgrade: h2c
User-Agent: Java-http-client/10
Host: test.example.com
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它会发送两个Host标头(URI和我指定的Host标头),但我希望它发送我指定的标头,而不是URI中的标头.这个客户有可能吗?
编辑:在Java 11中,它变得更糟(你需要将client.send行改为:)client.send(request, HttpResponse.BodyHandlers.ofString());:
java.lang.IllegalArgumentException: restricted header name: "Host"
Run Code Online (Sandbox Code Playgroud)
如何自定义该标头(测试虚拟主机所需)?
我也试过setHeader并得到完全相同的问题(双头Host或异常).
编辑:我报告了一个JDK错误.
我们正在使用Install4j 7.0.6,并将Java最低版本设置为“ 10.0.1”。我们将Java 10.0.1捆绑到媒体文件中。当我们用Java 9 VM替换随附的JVM时,我们的应用程序仍然启动。我们只是误解了Java最低版本的功能还是使用了错误的版本格式,还是在Install4j 7.0.6中损坏了?
我正在尝试将我的 JavaFX Gradle 项目更新到 Java 10。我已经像本指南中一样更改了我的 build.gradle 文件。但是当我尝试运行项目(执行./gradle run)时,我收到此错误:
> Task :run FAILED
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:941)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x5ce4f9a4) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics …Run Code Online (Sandbox Code Playgroud)