Tag: java 7

不支持的major.minor版本52.0 – grails

我刚从svn下载了一个grails项目。 我看到不受支持的major.minor版本是由于在运行时和编译时使用的JDK不匹配版本导致的SO上的一个众所周知的问题 。 但我使用的是与以下相同的版本: 贝壳: JAVA构建路径: 安装JRE: 请问我因缺少以下错误而遗失了什么? Environment set to development [groovyc] Compiling 190 source files to C:\Users\xxx java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main : Unsupported major.minor version 52.0 at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116) at _GrailsCompile_groovy$_run_closure4_closure10.doCall(_GrailsCompile_groovy:117) at _GrailsCompile_groovy$_run_closure4_closure10.doCall(_GrailsCompile_groovy) at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280) at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy) at _GrailsCompile_groovy$_run_closure4.doCall(_GrailsCompile_groovy:104) at _GrailsCompile_groovy$_run_closure3.doCall(_GrailsCompile_groovy:69) at _GrailsPackage_groovy$_run_closure2_closure9.doCall(_GrailsPackage_groovy:85) at _GrailsPackage_groovy$_run_closure2_closure9.doCall(_GrailsPackage_groovy) at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280) at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy) at _GrailsPackage_groovy$_run_closure2.doCall(_GrailsPackage_groovy:84) at RunApp$_run_closure1.doCall(RunApp:28) at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) at […]

Apache FileUtils.isSymlink和Java7的Files.isSymbolicLink()之间是否存在已知的差异?

在我的Windows 7 64位机器上进行调试时,我注意到有一个符号链接文件夹, FileUtils.isSymlink()返回false。 Java7的Files.isSymbolicLink()可以正常工作。 这知道吗? 我应该报告错误吗?

Java拖放OS X报告移动而不是复制

更新/状态:错误报告给Oracle,目前仍处于打开/未解决状态: https : //bugs.openjdk.java.net/browse/JDK-8054325 我发现了一个奇怪的错误,它只能在OS X上的Java 7和8上显示,而不是在Java 6中,在Java 7 Windows上都没有。 下面是提取的bug尽可能多地删除不需要的代码。 它给我们留下了一个小桌子和一个按钮,我们可以从按钮顶部的桌子上拖动单元格。 在我们的生产代码中,我们使用的是带有COPY_OR_MOVE作为源操作的TransferHandler 。 我们有两个目标,一个DropTarget接受为MOVE ,另一个接受为COPY 。 似乎在OS X上JDK / JRE被破坏了,因为如果DropTarget接受为COPY它在TranferHandler报告的是MOVE 。 如果我们在Java 6(或Windows上的Java 7)上执行下面的代码,它会报告( 按预期 ): not move is copy 但是当我们在OS X Java 7或Java 8上执行它时,我们得到以下结果: is move not copy 我已经测试并向Oracle报告了这个问题(错误报告仍在审理中)。 但是,由于这将需要(loooong)同时得到修复,也许这里有人知道如何制作一个“干净”的解决方法? 我宁愿没有链接到原始组件的放置目标告诉它实际操作(复制或移动),这个声音过于复杂。 import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; […]

Java 8接口/类加载器有变化吗?

我发现Java 1.7_51和Java 1.8_20之间存在一些困难。 最初的情况: 一个界面: interface InterfaceA { public void doSomething(); } 两个class: public class ClassA implements InterfaceA { public void doSomething() { System.out.println(“Hello World!”); } } public class ClassB { public static void main(String[] args) { ClassA a = new ClassA(); a.doSomething(); } } 接下来我在编译完成后用(Java 1.8) – > javac * .java编译了类,我删除了InterfaceA.java和InterfaceA.class文件。 现在我再次尝试编译只有ClassB.java并得到错误消息: ClassB.java:4:错误:无法访问InterfaceA a.doSomething(); […]

java.nio.file.FileAlreadyExistsException如何在java7中解决这个问题

我正在编写代码我正在用java nio api创建一个目录,我的代码段是 Path target = Paths.get(“”+folder_path+xx[0]); Set perms = null; if(xx[2].toLowerCase().equals(“read”)) perms =PosixFilePermissions.fromString(“r——–“); if(xx[2].toLowerCase().equals(“read/write”)) { perms =PosixFilePermissions.fromString(“rw——-“); } FileAttribute<Set> attr = PosixFilePermissions.asFileAttribute(perms); Files.createDirectory(target, attr); 但这是一个错误 java.nio.file.FileAlreadyExistsException: /home/ritesh/Desktop/userA 我知道的原因是因为一个目录已经具有相同的名称,但我想用我的代码目录生成的目录覆盖userA目录如何完成这个?

invokedynamic和隐式方法

正如我在阅读这篇关于JDK 7中新的invokedynamic字节码指令的post所理解的那样,它可以调用对象类中没有静态定义的对象上的方法,并将这些方法调用解析为某些具体的静态方法。其他类通过拦截方法调用目标分辨率(post给出一个例子)。 这是否意味着Java 7类可以拥有像Scala这样的隐式方法? 如果不是,Scala中的隐式方法解析与invokedynamic方法解析有何不同?

在Java 7中调整默认文件系统的行为

Java 7为编写自定义文件系统引入了一个很棒的API。 考虑一个我不想实现新文件系统的用例,我只想调整现有文件系统的行为。 例如,翻转从其写入/读取的每个位。 在我看来,目前的jdk没有适当的设施。 AbstractFileSystemProvider,WindowsFileSystemProvider扩展的提供程序是包私有的,所以我不能重用它。 我甚至没有找到Linux的具体实现。 问题#1:当前文件系统没有用于扩展的有用抽象。 我们假设我只针对Windows扩展。 WindowsFileSystemProvider是公共的,所以我实际上可以轻松地覆盖newByteChannel并完成它。 可惜! 问题2:WindowsFileSystem 不公开,所以我实际上只需要编写一个全新的FileSystem来引入一个新的Provider。 我是否遗漏了某些内容,或者此function是否完全原始且未准备好供应用程序编写者使用?

我们可以使用jdk7 javac将java7特性的代码编译成java6字节码

我正在考虑一个java项目是否可以生成2个jar:一个用于java7,一个用于java6,是的,源代码可能会使用一些java7新function。 所以要生成java6 jar,命令行就像: javac -target 1.6 -bootclasspath jdk1.6.0\lib\rt.jar -extdirs “” MyApp.java 不幸的是,它只是发出一个错误: javac: target release 1.6 conflicts with default source release 1.7 根据这个文件 ,应该有可能jdk6 vs jdk5,任何人都知道为什么它在jdk7 vs jdk6中不起作用? 我做错了什么,还是只是官方不支持? 谢谢。

如何完全限定其包名与本地成员名冲突的类?

好的,这里是JLS专家的一个非常好奇的Java 7语言谜题。 以下代码不能用javac和Eclipse编译: package com.example; public class X { public static X com = new X(); public void x() { System.out.println(com.example.X.com); // cannot find symbol ^^^^^^^ } } 似乎成员com完全阻止从X访问com.*包。 但是,这并未得到彻底应用。 以下工作,例如: public void x() { System.out.println(com.example.X.class); } 我的问题: 这种行为如何从JLS中certificate是正确的? 我该如何解决这个问题 请注意,这只是对生成代码中的实际问题的简化,其中需要完全限定com.example.X并且无法重命名com成员。 更新 :我认为它实际上可能是类似这样的问题: 为什么我不能在Java中“静态导入”一个“等于”方法?

Eclipse和JDK 7

我想知道是否有人在使用Eclipse编译JDK 7代码时遇到问题? 因为目前我只能在Eclipse中使用JRE 7来测试运行,但至于尝试在我的代码中使用JDK 7function,它会说它不支持。