我安装了JDK 10来尝试新功能,并且由于某种原因,我在var上挂了一个大型,即使将JDK添加到Intellij(版本2018.1),以下代码仍然不会编译,说Java找不到符号var: public class Variations { public static void main(String[] args) { var local = "foo"; System.out.println(local); } } 我在这里错过了一些明显的东西,还是在Intellij中有一个选择? 编辑: project 和模块 SDK和语言级别都设置为Java 10安装和LVL. 10(尽管不是X - experimental级). 解决方案 显然,尽管IDE的硬重新启动还不够,但通过将语言级别设置为项目和模块一次,然后将其重新设置为LVL. 10 足够将IDE恢复到排队. 我想我应该在这里对@crazycoder的信用,即
以下是关于 java-10 的编程技术问答
在对var功能进行评论之后 我遇到了用JDK 10设置我的Eclipse/Intellij Ide IDE的困难,因此正在向拥有Java 10环境的堆栈溢出用户寻求帮助. 考虑以下内容: 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.
我已经安装了 2018.1 的 Intellij Idea(社区版),它增加了对 Java 10 的支持.. 当我尝试使用新" var" 键入本地变量时,IDE用红色和可爱的短语突出显示:"无法解决" var"类型.请参阅附件 varred 我已经阅读了另一个帖子,该帖子与会员提供了可能的解决方案 https://stackoverflow.com/A/49719734/9478809 我也做到了,我为Java语句创建了一个为该类型的实时模板,但仍然不起作用. 你们中有些人对此有任何建议吗? 感谢您的帮助 事先感谢. 解决方案 要扩展Nullpointer的评论,您需要验证一些事情: 确保您已下载了更新的SDK(版本10或更高版本).我建议使用SDKMAN安装SDK,因为它有助于管理多个版本. sdkman hit cmd ; 打开项目结构 对于项目SDK,选择您更新的Java SDK 对于项目语言级别,选择相应的级别 现在导航到模块,
版本 Java:10.0.1 TOMCAT:8.0.36 Ubuntu:18.04(64位) 日食:光子(64位) 错误:当我运行tomcat服务器时,我发现以下错误.如果可能的话,请不要告诉我减少版本,因为我喜欢使用最新技术. SEVERE: Failed to trigger creation of the GC Daemon thread during Tomcat start to prevent possible memory leaks. This is expected on non-Sun JVMs. java.lang.ClassNotFoundException: sun.misc.GC at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.jav
我正在尝试在ubuntu上创建项目.不会给我一个错误或其他东西,只是这个空白屏幕. 帮助/关于: Product Version: NetBeans IDE 8.2 (Build 201609300101) Updates: NetBeans IDE is updated to version NetBeans 8.2 Patch 2 Java: 10.0.2; OpenJDK 64-Bit Server VM 10.0.2+13-Ubuntu-1ubuntu0.18.04.1 Runtime: OpenJDK Runtime Environment 10.0.2+13-Ubuntu-1ubuntu0.18.04.1 System: Linux version 4.15.0-33-generic running on amd64; UTF-8; en_US (nb) User directory: /home/q/.netbeans/8.2 Cache directory:
如何在Ubuntu上安装Java开发套件(JDK)10? 安装说明 ON Oracle的帮助中心仅说明如何在Linux平台上下载和提取档案,而无需任何系统设置. 解决方案 更新:JDK 11现在可用 sudo apt-get install openjdk-11-jdk 对于JDK 10 选项1:易于安装(PPA) sudo add-apt-repository ppa:linuxuprising/java sudo apt-get update sudo apt-get install oracle-java10-installer 然后将默认设置为: sudo apt-get install oracle-java10-set-default 最终用以下方式验证安装: $ java -version java version "10.0.1" 2018-04-17 Java(TM) SE Runtime Environment
Java 10引入了本地类型推理,这确实很酷: var list = new ArrayList(); // Compiles fine 但是,人们似乎不愿意更新其Java版本(一周,月,年). 这意味着我需要等到Java 8的EOL之前,我甚至可以使用List.of(1, 2, 3)使用List.of(1, 2, 3),如果要使用旧Java版本支持大多数用户. 另一方面,本地类型的推断可能会在将其编译为字节码时推断出来,因此可能使用它的程序可能会在较旧的Java版本上运行(9或8).另一方面,Java似乎喜欢在运行时进行优化,这可能意味着类型 - 引入需要JRE版本10. 有人尝试过吗? do do 使用类型推理在较旧的Java版本上运行? 您的输入非常感谢. 解决方案 类型推理不会更改字节码,因此原则上,使用var编译的代码与较旧的JVM兼容. 但是,像往常一样,javac不允许您将-source选项与-target选项更高
两个电话都是正确的: Collectors.groupingBy((String s)->s.toLowerCase(),Collectors.counting()); Collectors.groupingBy((String s)->s.toLowerCase(Locale.ENGLISH),Collectors.counting()); 从那时起,为什么以下一个错误: Collectors.groupingBy(String::toLowerCase,Collectors.counting()); 毕竟String::toLowerCase不能与第二个相对应...那么为什么Intellij说Reference to 'toLowerCase' is ambiguous, both 'toLowerCase(Locale)' and 'toLowerCase()' match? String::toLowerCase必须明确解决(String s)->s.t
我试图理解本地变量类型输入在Java 10中. 下面的代码在编译和运行时完美工作: List list1 = Arrays.asList(1L, 2.0F, "3"); var list2 = list1; 但是,此行抛出了汇编错误: var list3 = Arrays.asList(1L, 2.0F, "3"); Error:java: java.lang.AssertionError: Unexpected intersection type: java.lang.Object&java.io.Serializable&java.lang.Comparable> 我真的不明白为什么第二案是错误的,而不是第一个情况.因为我希望编译器可以推断list1的类型并处理list2和list3.预先感谢. 解决方案
Java 10 brings a C#-like var keyword for 本地类型推导. 但是Java 10还提供了val关键字,在Scala中找到? val可以像var一样工作,但绑定将为final. var x = "Hello, world. "; x = "abc"; // allowed val y = "Hello, world. "; y = "abc"; // forbidden 如果没有,是否有理由是这种情况? 解决方案 java 10中没有val,如类型推理: 语法选择 对语法有多种观点.这是两个主要的自由度,这是要使用的关键字(var,auto等),以及是否为不变的当地人(val,let)拥有单独的新形式.我们考虑了以下句法选项: var x =仅expr(例如c#) var,加上不可变的当地人的瓦尔(例如Scala,Kotlin) var,加上不可变的当地人(如迅速) auto x = expr(例如
使用Java 10,我们可以使用类型推理. String s1 = "hello"; // before Java 10 var s2 = "hello"; // now 但是,我们以前做不到一件事:具有类型 void 的变量. 因此,在以前的版本中,我们根本无法定义变量类型void.但是现在我们可以将返回void的方法的结果分配给变量: void emptyMethod() { } ... void v1 = emptyMethod(); // won't compile var v2 = emptyMethod(); // no problem at all 问题是 - 为什么要编译,它的目的是什么?你有这个奇怪的东西吗? 类型void的变量没有方法,甚至不能用作方法的参数. 解决方案 您为什么认为它会编译?它没有编译: > javac Main.java Main.java:5: error: cannot infer type fo
来自 jep 286 ,我们看到我们能够利用本地类型推断( var)在JDK 10(18.3)中. JEP指出以下编译,这是可以预期的: var list = new ArrayList(); // infers ArrayList 我很想知道如果我们尝试以下操作会发生什么: var list = new ArrayList(); 我在第二片片段中提出的内容甚至会编译吗?如果是这样(我怀疑),ArrayList是否接受Object是其通用类型? 我会自己尝试一下,但是我无法访问任何可以在上面安装的机器. 谢谢! 解决方案 是,var,可以将钻石操作员组合在一起.编译器将推断出最特定的通用类型: var list = new ArrayList(); // Infers ArrayList var list = new ArrayList(List.of(1, 2, 3)); //
我尝试扫描 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 } } 我确实看到,另一方面没有编译: public class TestClass { public var list = new ArrayList(); public static void main(String [] args){ } } 很明显,它没有,因为JEP是这样说的.现在我的问题: 对于 public/preconded 成员宣布为var失败,至少是IMO
我正在尝试使用Spring Boot 2的Java 10开发,并且遇到了一些问题. 该应用程序是一个基于Spring Boot 2的简单WebApp.应用程序发布还可以,但是当我停止时,我会收到此警告: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Users/CS/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.11/tomcat-embed-core-9.0.11.jar) to field java.io.ObjectStreamClass$Caches.localDescs WARNING: Please consider rep
我已经在Windows机器上安装了Apache-Tomcat- 9.0.7 ,并具有以下环境配置: 回声%java_home% c:\ program文件\ java \ jdk-10.0.0.1 echo%jre_home% c:\ program Files \ Java \ JRE-10.0.1 OS: Windows 8 64位 日食版本: oxygen.3a 释放(4.7.3a) 每当我从 cmd 运行catlina.bat start时,服务器在localhost上运行良好,但我无法从eclipse的服务器配置中启动服务器实例. 在Eclipse中定义了新服务器,并添加了Apache-Tomact 9.0实例 单击开始服务器时,我会收到以下错误: -djava.endorsed.dirs = c:\ softwares \ apache-tomcat-9.0.7 \不支持认可. Endorsed standards
以前,当该项目在Tomcat 8和Java 8上时,它运行良好,但是将项目迁移到Tomcat 9和Java 10后,它给了我错误的错误: Oct 05, 2018 11:02:01 AM org.apache.catalina.core.ApplicationContext log SEVERE: StandardWrapper.Throwable java.lang.IllegalArgumentException at jersey.repackaged.org.objectweb.asm.ClassReader.(ClassReader.java:170) at jersey.repackaged.org.objectweb.asm.ClassReader.(ClassReader.java:153) at jersey.repackaged.org.objectweb.asm.ClassReader.(ClassR
tldr :在Java 9/10上,Tomcat中的Web应用程序也无法访问JAXB,即使在类路径上存在其参考实现. edit :不,这不是如何解决Java.lang.lang.noclang.noclass.noclast.noclast.noclast.noclast.lang./xml/bind/jaxbexception in Java 9 - 您可以通过我尝试的 e节,我已经尝试了提出的解决方案. 情况 我们有一个在tomcat上运行的Web应用程序,并取决于JAXB.在迁移到Java 9期间,我们选择添加 jaxb参考实现作为常规依赖性.. 从IDE启动应用程序时,所有功能都可以使用带有嵌入式tomcat ,但是在真实的tomcat实例上运行它时,我会得到此错误: Caused by: java.lang.RuntimeException: javax.xml.bind.JAXBException: Implementation of J
在Javafx 8中,有可能覆盖TableView.resizeColumnToFitContent函数.这对于我们的目的至关重要,因为它允许我们增强列出列表的方式超出默认实现的方式,并调整默认值在较大表中稍有损失的性能. . 在嵌套列标题的上下文中,如何增强布局行为的一个示例.默认情况下,根据该列中数据行的最大宽度或叶列的标题文本的宽度,以叶列标题的前宽为止,以更大的为准.但是,如果该叶子标头的一些父列标题带有更宽的标题文字,则将剪切并显示一个省略号.这对我们来说是不可取的,因此我们更改了resizeColumnToFitContent,因此叶列标题的前方还考虑了其父列标题的前方. 从Java 9和以下提交开始,resizeColumnToFitContent函数已移至静态位置,删除了自定义此行为的能力: /openjfx/9-dev/rt/rev/53bfdfed5bbf 大约一个星期前,我写信给对这一变化的作者,乔纳森·吉尔斯(Jonathan Gil