JavaFX8 – 找不到sun.util.logging.PlatformLogger在NetBeans 8中的exception

我最近在Windows 8.1机器上安装了JDK8 + Netbeans8(从Oracle站点下载了捆绑的安装程序)。

当我创建一个非常简单的JavaFX FXML应用程序时,它工作正常。 但是,当我使用向导添加一个新的数据库实体类并编译它时,我得到以下堆栈跟踪:

Note: Creating non-static metadata factory ... error: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for sun.util.logging.PlatformLogger not found An annotation processor threw an uncaught exception. Consult the following stack trace for details. java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for sun.util.logging.PlatformLogger not found at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:407) at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794) at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705) at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91) at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035) at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176) at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1173) at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:859) at com.sun.tools.javac.main.Main.compile(Main.java:523) at com.sun.tools.javac.main.Main.compile(Main.java:381) at com.sun.tools.javac.main.Main.compile(Main.java:370) at com.sun.tools.javac.main.Main.compile(Main.java:361) at com.sun.tools.javac.Main.compile(Main.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56) at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1153) at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:930) at org.netbeans.modules.java.source.ant.JavacTask.execute(JavacTask.java:145) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:440) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.Project.executeTarget(Project.java:1364) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:286) at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:555) at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153) Caused by: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for sun.util.logging.PlatformLogger not found C:\Users\AJQ\Documents\NetBeansProjects\JavaFX8App\nbproject\jfx-impl.xml:3438: The following error occurred while executing this line: C:\Users\AJQ\Documents\NetBeansProjects\JavaFX8App\nbproject\build-impl.xml:924: The following error occurred while executing this line: C:\Users\AJQ\Documents\NetBeansProjects\JavaFX8App\nbproject\build-impl.xml:264: Compile failed; see the compiler error output for details. BUILD FAILED (total time: 0 seconds) 

但是,如果我在实体类中注释掉注释或将目标平台从1.8更改为1.7,则应用程序将被编译而没有任何问题。

是NetBeans 8中的一些错误还是其他一些配置问题?

我有相同的平台(netbeans 8.0和JDK 8),在其他项目中搜索(构建在netbeans 7.4和JDK 7中)我在project.properties文件中发现了一点点差异,在<> / nbproject中搜索它,查找该行:

 javac.processorpath=\ ${javac.classpath}:\ ${libs.eclipselinkmodelgen.classpath} 

并将文本更改为最终如下:

 javac.processorpath=\ ${javac.classpath} 

多数民众赞成,我不知道它是否是netbeans 8中的一个错误,或者在制作项目的方式上可能有问题,但这个修复工作对我来说,更多细节在这个博客条目 (西class牙语版本)

  1. 右键单击项目,然后选择“ 属性 ”。
  2. 从打开的“ 项目属性窗口 ”中选择“ ”。
  3. 选择“ 处理器 ”选项卡。
  4. 从那里删除EclipseLink。
  5. 应用更改并执行Clean Build

而已。 🙂

对于Maven项目,设置编译器插件的bootclasspath可以解决问题:

    org.apache.maven.plugins maven-compiler-plugin 3.1   ${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar      

我得到了同样的错误,我检查了imolero在project.property文件中所说的内容,正如他所说的是解决方案,所以我不得不改变它。

我意识到每次我在JavaFX项目中工作时,java文件都不会在保存文件时自动编译,所以我手工制作(F9),然后重新运行项目,一切正常。 我试图在项目属性中设置Compile on Save,但是被遮蔽了,这就是我必须手动完成的原因。 我的环境是:Windows 7 Professional 64位,JDK 1.8.0,Netbeans 8.0(Build 201403101706)