6

Dưới đây là một lỗi nhận được từ Xuyên chẩn đoán javaCompiler taska:Netbeans và tập tin cấu hình dịch vụ Bad, hoặc ném ngoại lệ khi xây dựng xử lý đối tượng

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 

Tôi cố gắng để năng động comppile một lớp java đơn giản từ tập tin, sử dụng JavaCompiler. Lớp này trông giống như:

package web.others; 

public class User { 

} 

Dự án của tôi là loại dự án Maven

như bạn sẽ nhìn thấy conatins lớp không có gì đặc biệt. Một điều tôi cần nó là lấy một đối tượng Class từ lớp này. Nhưng khi chạy. Tôi muốn biên dịch động lớp này và nhận đối tượng Class. Vấn đề là tôi làm việc trên Netbeans Plaform và tôi muốn làm điều đó trong IDE này (i phát triển một plugin đơn giản)

Để biên dịch và chạy im sử dụng một đoạn mã sau:

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

Và luôn luôn tôi nhận được một sau đây lỗi từ chẩn đoán:

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 

Bất kỳ ai có thể trợ giúp vấn đề này tôi sẽ rất vui lòng được trợ giúp!

UPDATE:

đây pom.xml của tôi:

<?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

Bạn có thể dán pom.xml của mình không? –

+0

Chắc chắn tôi đã cập nhật một bài đăng ở trên. –

+0

Hình như PatchedPublicProcessor không thực hiện cùng một AbstractProcessor của trình biên dịch Hệ thống Java của bạn, đó là lý do của một lỗi loại phụ. – vzamanillo

Trả lời

4

tôi phải đối mặt với cùng một vấn đề chính xác này. Vấn đề là dòng này đã mất tích từ maven-complier-plugin 's <configuration>:

<compilerArgument>-proc:none</compilerArgument>

Mục đích của việc này là để nói với trình biên dịch không sử dụng bộ vi xử lý này cho chính mình. Nếu bạn không có nó, nó sẽ cố gắng sử dụng bộ xử lý đó trong quá trình biên dịch bộ xử lý và (như hiển nhiên) nó sẽ không tìm thấy nó vì nó đang được biên dịch.

(hoặc ít nhất đó là cách tôi hiểu vấn đề, vui lòng sửa tôi nếu tôi sai).

+0

Âm thanh như một lỗi trong 'maven-complier-plugin' –

+0

Tôi không nghĩ đó là lỗi, tôi không nhớ chính xác vị trí nhưng rõ ràng rằng đó là cách để làm điều đó, và nếu bạn nghĩ về nó hợp lý – Ordiel

Các vấn đề liên quan