草庐IT

java - 为什么这段代码可以在 Java 1.6 中编译,但不能在 Java 1.7 中编译?

以下代码在Java1.6中编译良好,但在Java1.7中编译失败。为什么?代码的相关部分是对私有(private)“数据”字段的引用。该引用来自定义该字段的同一个类,因此看起来是合法的。但它是通过一个通用类型的变量发生的。此代码-基于内部库中的类的精简示例-在Java1.6中有效,但现在在Java1.7中无效。我不是在问如何解决这个问题。我已经这样做了。我试图找到一个解释,说明为什么这不再起作用。我想到了三种可能性:根据JLS,此代码不合法,不应该编译(1.6编译器中有一个错误,已在1.7中修复)根据JLS,此代码合法,应该可以编译(1.7编译器中引入了向后兼容性错误)此代码落入JLS

java - 在 Java 6 中编译,在 Java 7 中运行——如何指定 useLegacyMergeSort?

我想知道如果我在Java6中编译,但有人在Java7上运行该程序,是否会使用Java6或7版本的Arrays.sort?这很重要,因为新的合并排序会抛出IllegalArgumentException,而旧的不会(参见Comparisonmethodviolatesitsgeneralcontract!Java7only)现在,可以使用Arrays.useLegacyMergeSort在Java7中进行编译,但显然该标志不适用于Java6-我们希望在MacOSSnowLeopard(使用6)上兼容。出于某种原因(参见http://madbean.com/2006/target14/)-

java 10编译空指针异常

我最近安装了jdk10。我正在执行正常代码,但无法正常工作。我是不是做错了什么?请查看代码和异常堆栈跟踪。据我所知,这种行为应该没有任何理由。importcom.bean.College;publicclassStudent{interfaceClub{Tget(Collegekey);}privateClubclub;Student(){Objectobj=club.get(newCollege(){});}}导入的College类是:publicclassCollege{intid;protectedCollege(){}College(intid){this.id=id;}}编译

java - maven 中 javac 编译顺序错误的解决方法

我在Java编译器中遇到一个错误,提交编译的文件顺序可能导致代码无法编译。我已经深入研究代码以隔离我可以重现问题的最少量代码,从而导致threesourcefiles(各1节课)。publicinterfaceActionSpec{publicabstractintrun(Stringparam);}publicenumActionsimplementsActionSpec{SKIP{publicintrun(Stringd){return0;}};}publicclassProgram{publicstaticvoidmain(String[]args){Actions.SKIP.r

java - "java.lang.NoSuchFieldError: super"异常 - 编译器中的错误?

以下用Java-9编写的代码正在运行,在运行时中出现了一个非常奇怪和有趣的异常:Exceptioninthread"main"java.lang.NoSuchFieldError:superatA$C.test(A.java:15)atA.main(A.java:5)代码:publicclassA{publicstaticvoidmain(String[]args){newC().test();}interfaceB{privatevoidtest(){}}staticclassCimplementsB{voidtest(){B.super.test();}}}我想知道:它是这样设计的

java - 为什么自动装箱在 eclipse 中有效而在 javac 中无效?

这段代码:Integerints[]=newInteger[]{'1','2','3'};在eclipse中编译得很好,但是javac(版本1.6.0_27和1.7.0)给出了以下错误:BoxTest.java:4:incompatibletypesfound:charrequired:java.lang.IntegerIntegerints[]=newInteger[]{'1','2','3'};BoxTest.java:4:incompatibletypes为什么?我假设它是某种编译器标志,但通过eclipse挖掘来找出它并不完全直接。 最佳答案

java - 您在哪里配置 Eclipse Java 编译器 (javac) 标志?

例如javac-gButtMonkey.javaEclipse编译Java源码的时候在哪里设置-g标志?(使用Ganymede,但我怀疑它在以后的版本中发生了变化,所以任何答案都可能有所帮助。)我需要的是:-gGeneratealldebugginginformation,includinglocalvariables.Bydefault,onlylinenumberandsourcefileinformationisgenerated. 最佳答案 选择菜单:Window>Preferences>Java>Compiler您会在“类

javac 错误 : "package x does not exist" at "import x"

我正在尝试使用命令提示符和以下命令编译我的java文件“check4PrimeTest.java”:javac-classpath.:junit.jarcheck4PrimeTest.java我收到以下错误:error:packagejunit.frameworkdoesnotexistimportjunit.framework.*;我不确定为什么会出现此错误,因为我在我的程序中导入了junit.framework.*。下面是我的代码:packagecheck4prime;//check4PrimeTest.java//Importsimportjunit.framework.*;pu

Lombok报错:class lombok.javac.apt.LombokProcessor

错误信息java:java.lang.IllegalAccessError:classlombok.javac.apt.LombokProcessor(inunnamedmodule@0x3278991b)cannotaccessclasscom.sun.tools.javac.processing.JavacProcessingEnvironment(inmodulejdk.compiler)becausemodulejdk.compilerdoesnotexportcom.sun.tools.javac.processingtounnamedmodule​​​​​​​问题原因: 1、lom

class lombok.javac.apt.LombokProcessor (in unnamed module @0x2676dc05) cannot access class com.sun.t

classlombok.javac.apt.LombokProcessor(inunnamedmodule@0x29ebbdf4)cannotaccessclasscom.sun.tools.javac.processing.JavacProcessingEnvironment(inmodulejdk.compiler)becausemodulejdk.compilerdoesnotexportcom.sun.tools.javac.processingtounnamedmodule@0x29ebbdf4当遇到这种错误应该如何呢?翻译过来就是:类lombok.javac.apt.LombokP