6

Ecco un errore di andare da throught diagnostica javaCompiler Taska:Netbeans e file di configurazione del cattivo servizio, o eccezione generata durante la creazione oggetto Processore

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 

ho cercando di dinamica comppile una semplice classe Java da file, utilizzando JavaCompiler. Questa classe appare come:

package web.others; 

public class User { 

} 

Il mio progetto è Maven Tipo di progetto

come si può vedere nulla conatins classe speciale. Una cosa che mi serve è ottenere un oggetto Class da questa classe. Ma in fase di esecuzione. Mi piacerebbe compilare questa classe dinamica e ottenere l'oggetto Class. Il problema è che io lavoro su Netbeans Plaform e voglio farlo in questo IDE (ho sviluppato un semplice plugin)

di compilare ed eseguire im utilizzando un codice seguente:

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); 
} 

E sempre io ottenere un seguito errore dalla diagnostica:

Chiunque può aiutare con questo problema, sarà un grande aiuto!

UPDATE:

qui il mio 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

Potresti superare anche il tuo pom.xml? –

+0

Certo che ho aggiornato un post sopra. –

+0

Sembra che PatchedPublicProcessor non implementa lo stesso AbstractProcessor del compilatore Java System, questo è il motivo di un errore di sottotipo. – vzamanillo

risposta

4

Ho affrontato questo problema esattamente lo stesso. Il problema era che questa linea mancava maven-complier-plugin s' <configuration>:

<compilerArgument>-proc:none</compilerArgument>

Lo scopo di questo è di informare il compilatore non utilizzare questo processore per noi stessi. Se non ce l'hai, cercherà di usare quel processore durante la compilazione del processore e (come ovvio) non lo troverà da quando è in fase di compilazione.

(o almeno questo è il modo in cui ho capito la questione, correggimi se ho torto).

+0

Sembra un errore in 'plugin-complier-plugin' –

+0

Non penso che sia un bug, non ricordo esattamente dove ma è esplicitamente specificato che quello è il modo di farlo, e se ci pensi è logico – Ordiel