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 中找不到异常

在哪里可以找到 JDK 8/JavaFX 8 源代码? [关闭]

“textarea”中的 JavaFX 8 计数行

JavaFX 8 DatePicker 风格

JavaFX 8 日期选择器功能

javaFX 8 中@NamedArg 注释的目的是啥?