JavaFX8 - sun.util.logging.PlatformLogger 在 NetBeans 8 中找不到异常
Posted
技术标签:
【中文标题】JavaFX8 - sun.util.logging.PlatformLogger 在 NetBeans 8 中找不到异常【英文标题】:JavaFX8 - sun.util.logging.PlatformLogger not found Exception in NetBeans 8 【发布时间】:2014-04-29 01:24:33 【问题描述】:我最近在我的 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 中的错误还是其他配置问题?
【问题讨论】:
【参考方案1】:我有相同的平台(netbeans 8.0和JDK 8),在其他项目中搜索(在netbeans 7.4和JDK 7中构建)我发现project.properties文件有点不同,在中搜索它,看看换行:
javac.processorpath=\
$javac.classpath:\
$libs.eclipselinkmodelgen.classpath
并将文本最终更改为以下内容:
javac.processorpath=\
$javac.classpath
仅此而已,我不知道这是否是 netbeans 8 中的错误,或者可能是制作项目的方式有问题,但此修复对我有用,更多详细信息请参见 blog entry(西班牙语版)
【讨论】:
【参考方案2】:我遇到了同样的错误,我检查了 imolero 在 project.property 文件中所说的内容,并且正如他所说的那样是解决方案,所以我不必更改任何内容。
我意识到每次我在JavaFX项目中工作时保存文件时java文件都不会自动编译,所以我手动(F9),然后重新运行项目,一切正常。我试图在项目属性中设置 Compile on Save ,但被遮住了,这就是我必须手动执行的原因。我的环境是:Windows 7 Professional 64 bits, JDK 1.8.0, Netbeans 8.0 (Build 201403101706)
【讨论】:
【参考方案3】:对于 Maven 项目,为编译器插件设置 bootclasspath 可以解决问题:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerArguments>
<bootclasspath>$sun.boot.class.path$path.separator$java.home/lib/jfxrt.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
【讨论】:
【参考方案4】:-
右键单击项目并选择“Properties”。
从打开的“项目属性窗口”中选择“Libraries”。
选择“处理器”标签。
从那里删除 EclipseLink。
应用更改并执行干净构建。
就是这样。 :)
【讨论】:
认为这应该是公认的答案。为我工作。 是的,这个应该被接受。即使我正在使用相同版本的 Netbeans 和 java8 SDK,我也会收到此错误。不知道EclipseLink是怎么进去的。 您的回答应该被接受。它确实有效,我不知道为什么,但确实有效。以上是关于JavaFX8 - sun.util.logging.PlatformLogger 在 NetBeans 8 中找不到异常的主要内容,如果未能解决你的问题,请参考以下文章
JavaFX8 - sun.util.logging.PlatformLogger 在 NetBeans 8 中找不到异常