6

Здесь ошибка при получении от диагностики Повсеместно JavaCompiler Таска:Netbeans и Bad файл конфигурации службы или исключение брошено при строительстве объекта Processor

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 

Я пытался динамический comppile простого класса Java из файла, используя JavaCompiler. Этот класс выглядит следующим образом:

package web.others; 

public class User { 

} 

Мой проект Тип проекта Maven

, как вы можете увидеть conatins класса ничего особенного. Единственное, что мне нужно, это получить объект класса из этого класса. Но во время выполнения. Я хотел бы скомпилировать динамический класс и получить объект класса. Проблема заключается в том, что я работаю на 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 

Любой может помочь с этой проблемой, я буду благодарен за помощь!

UPDATE:

здесь мой 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> 
+0

Не могли бы вы пройти через свой pom.xml? –

+0

Конечно, я обновил сообщение выше. –

+0

Похоже, PatchedPublicProcessor не реализует тот же абстрактный процессор вашего Java-компилятора, что и причина ошибки подтипа. – vzamanillo

ответ

4

Я сталкивался с этой точно такой же проблемой. Проблема заключалась в том, что эта линия отсутствует maven-complier-plugin «s <configuration>:

<compilerArgument>-proc:none</compilerArgument>

Целью этого является, чтобы сообщить компилятору не использовать этот процессор для себя. Если у вас его нет, он попытается использовать этот процессор во время компиляции процессора и (как очевидно), он не найдет его с момента его компиляции.

(или, по крайней мере, так я понимаю дело, пожалуйста, исправьте меня, если я ошибаюсь).

+0

Звучит как ошибка в 'maven-complier-plugin' –

+0

Я не думаю, что это ошибка, я точно не помню, где, но явно указано, что это способ сделать это, и если вы думаете об этом, логический – Ordiel