【问题标题】:Netbeans and Bad service configuration file, or exception thrown while constructing Processor objectNetbeans 和错误的服务配置文件,或构造处理器对象时抛出异常
【发布时间】:2014-11-08 14:01:02
【问题描述】:

这里是通过 javaCompiler taska 从诊断中得到的错误:

  Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider org.netbeans.modules.openide.modules.PatchedPublicProcessor not a subtype

我尝试使用 JavaCompiler 从文件中动态编译一个简单的 java 类。这个类看起来像:

package web.others;

public class User {

}

我的项目是 Maven 项目类型

你可以看到这个类没有什么特别之处。我需要的一件事是从这个类中获取一个 Class 对象。但是在运行时。我想编译动态这个类并获取 Class 对象。问题是我在 Netbeans Plaform 上工作,我想在这个 IDE 中这样做(我开发了一个简单的插件)

使用以下代码编译和运行im:

 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
 DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
 StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
 Iterable<? extends JavaFileObject> compilationUnits = Arrays.asList(file);
 JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null,null,compilationUnits);
 boolean success = task.call();

 try {
   fileManager.close();
 } catch (IOException ex) {
    Exceptions.printStackTrace(ex);
 }
 System.out.println("Success: " + success);
 if (!success) {
    List<Diagnostic<? extends JavaFileObject>> dia = diagnostics.getDiagnostics();
    System.out.println("Diagnostic: " + dia);
 }

而且我总是从诊断中收到以下错误:

error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider org.netbeans.modules.openide.modules.PatchedPublicProcessor not a subtype

任何人都可以帮助解决这个问题,我将不胜感激!

更新:

这里是我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany</groupId>
  <artifactId>mavenproject2</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>nbm</packaging>
  <build>
    <plugins>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>nbm-maven-plugin</artifactId>
            <version>3.13</version>
            <extensions>true</extensions>
            <configuration>
                <publicPackages>
                    <publicPackage>org.netbeans.modules</publicPackage>
                </publicPackages>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>  
                <source>1.7</source>   
                <target>1.7</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <useDefaultManifestFile>true</useDefaultManifestFile>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
<repositories>
    <repository>
        <id>netbeans</id>
        <name>Repository hosting NetBeans modules</name>
        <url>http://bits.netbeans.org/nexus/content/groups/netbeans</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>unknown-jars-temp-repo</id>
        <name>A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository.</name>
        <url>file:${project.basedir}/lib</url>
    </repository>
</repositories>
<dependencies>

    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-core-ide</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-util</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-awt</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-nodes</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-filesystems</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-loaders</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-windows</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-util-lookup</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-io</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-explorer</artifactId>
        <version>RELEASE80</version>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-dialogs</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-text</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>


    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-openide-modules</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-projectuiapi</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-settings</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-projectapi</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-db</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-editor-lib2</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-editor-lib</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-editor-mimelookup</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-parsing-api</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-editor-indent</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-api-java-classpath</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-java-source</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-libs-javacapi</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.netbeans.api</groupId>
        <artifactId>org-netbeans-modules-java-project</artifactId>
        <version>RELEASE80</version>
        <type>jar</type>
    </dependency>









    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.6.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.1.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
        <version>4.3.6.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>4.3.6.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-proxool</artifactId>
        <version>4.3.6.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-infinispan</artifactId>
        <version>4.3.6.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.3.6.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>unknown.binary</groupId>
        <artifactId>postgresql-9.2-1002.jdbc4</artifactId>
        <version>SNAPSHOT</version>
    </dependency>


    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.1.3.GA</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.5.Final</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.18.1-GA</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>com.sun.codemodel</groupId>
        <artifactId>codemodel</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.0.5.RELEASE</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.0.5.RELEASE</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>unknown.binary</groupId>
        <artifactId>postgresql-9.3-1102.jdbc4</artifactId>
        <version>SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
        <version>2.5.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.reflections</groupId>
        <artifactId>reflections</artifactId>
        <version>0.9.9-RC1</version>
    </dependency>

   </dependencies>
   <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
 </project>

【问题讨论】:

  • 你的 pom.xml 也能过去吗?
  • 确定我更新了上面的帖子。
  • 看起来 PatchedPublicProcessor 没有实现与 Java System 编译器相同的 AbstractProcessor,这是子类型错误的原因。

标签: java netbeans netbeans-7 netbeans-platform netbeans-plugins


【解决方案1】:

我遇到了同样的问题。问题是maven-complier-plugin&lt;configuration&gt; 中缺少这一行:

&lt;compilerArgument&gt;-proc:none&lt;/compilerArgument&gt;

这样做的目的是告诉编译器不要为我们自己使用这个处理器。如果你没有它,它会在编译处理器期间尝试使用该处理器,并且(很明显)它不会找到它,因为它正在编译。

(或者至少我是这样理解这件事的,如果我错了,请纠正我)。

【讨论】:

  • 听起来像maven-complier-plugin中的一个错误
  • 我不认为这是一个错误,我不记得确切的位置,但它是否明确指定这是这样做的方式,如果你认为它是合乎逻辑的
猜你喜欢
  • 2016-07-14
  • 2011-06-25
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
相关资源
最近更新 更多