Java - compilation error: cannot access-Funktion
Habe ich osgi-Projekt. Jedes Bündel ist mit einem separaten maven-Projekt. Projekt ist groß genug und umfasst etwa 10 bundles. Alles funktioniert und ist ok.
Heute habe ich dazu noch eine Bibliothek - https://code.google.com/p/owasp-java-html-sanitizer/ . Ich habe eingestellt, dass alle Abhängigkeiten und ide (netbeans 8) zeigt, ist alles ok. Jedoch bekomme ich die folgende Zusammenstellung von code in dieser Methode:
@Override
public void sanitize(Map<String,Object> policies){
PolicyFactory policy=(PolicyFactory) policies.get("html0");
this.code=policy.sanitize(this.code);
}
In der zweiten Zeile der Methode (dies.code...) bekomme ich folgende Zusammenstellung error: cannot access-Funktion. Kann nicht verstehen, worum es geht...
BEARBEITEN
Import-Abschnitt:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.owasp.html.PolicyFactory;
BEARBEITEN
COMPILATION ERROR :
-------------------------------------------------------------
com/subjects/SubjectDirItemCore.java:[166,24] error: cannot access Function
1 error
-------------------------------------------------------------
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 1.687s
Finished at: Wed Feb 18 16:11:11 MSK 2015
Final Memory: 14M/205M
BEARBEITEN
- ich habe versucht, per mvn install-X
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
ausführen Ziel
org.apache.maven.plugins:maven-compiler-plugin:2.3.2:kompilieren
(default-compile) on-Projekt com.....: Kompilierungs-Fehler
..../subjects/SubjectDirItemCore.java:[166,24] Fehler: kann nicht zugreifen
Funktionin
org.apache.maven.lifecycle.intern.MojoExecutor.execute(MojoExecutor.java:213)
bei
org.apache.maven.lifecycle.intern.MojoExecutor.execute(MojoExecutor.java:153)
bei
org.apache.maven.lifecycle.intern.MojoExecutor.execute(MojoExecutor.java:145)
bei
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
bei
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
bei
org.apache.maven.lifecycle.intern.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
bei
org.apache.maven.lifecycle.intern.LifecycleStarter.execute(LifecycleStarter.java:161)
bei org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) an
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at
org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) bei
org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at
Sonne.reflektieren.NativeMethodAccessorImpl.invoke0(Native Method) at
Sonne.reflektieren.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
bei
Sonne.reflektieren.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
bei java.lang.reflektieren.Methode.invoke(Method.java:497) at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
bei
org.codehaus.plexus.classworlds.launcher.Launcher.starten(Launcher.java:230)
bei
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
bei
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Verursacht durch: org.apache.maven.plugin.CompilationFailureException:
Zusammenstellung Ausfall /..../subjects/SubjectDirItemCore.java:[166,24]
Fehler: kein Zugriff auf Funktionin
org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:656)
bei
org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
bei
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
bei
org.apache.maven.lifecycle.intern.MojoExecutor.execute(MojoExecutor.java:209)
... 19 mehr [FEHLER]
- Was JDK Sie verwenden, um Ihren code kompilieren?
- openjdk version "1.8.0-internen" OpenJDK Runtime Environment (build 1.8.0-intern-_2014_11_22_23_46-b00) OpenJDK 64-Bit Server VM (build 25.40-b18, mixed mode)
- Ok. Wenn Sie Guave in Ihrem pom.xml was ist die genaue version? Auch, welche version der owasp-java-html-sanitizer verwenden Sie? Es sieht aus wie Inkompatibilität zwischen alten Guave und JDK8. Versuchen, um es zu kompilieren gegen JDK7.
- Ich habe keine Guave bei DIESEM budle pom. Guave 12 ist nur für die owasp-Bibliothek. Aber auf server-Seite habe ich java8+gf4.1+ owasp lib bundle und es ist ok.
- Versuchen Sie, fügen Sie die Letzte Guave (18) auf Ihrer pom.xml. Guave 12 veröffentlicht wurde, bevor JDK 8, und AFAIK hatte es einige Kompatibilitätsprobleme.
- Ich habe versucht, mit Guaven-18 - der gleiche Fehler.
- haben Sie ausgeschlossen transitive Abhängigkeit von owasp zu Guave? Wenn Sie die neuesten (r239) von owasp, die es beheben sollten, um die Letzte Guave, aber für einige ältere Versionen, die Sie angegeben genauen Guave version in Ihrer POM.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint dieses jar-version Problem. Wahrscheinlich eine neuere version der jar mit der Klasse PolicyFactory reduziert Sichtbarkeit der Methode bereinigt. Es müssen neue Methode, die Sie verwenden sollte wie die frühere Methode beschränkt ist.
Fand ich die anwser - ich habe Guave 12 statt Guave 11. Ich nahm 12 als es war die erste version, die als osgi-bundle.
In meinem Fall geschah dies, wenn das Artefakt wurde geschrieben, um die lokale
Maven
repository ohne eine richtigepom.xml
also die transitiven Abhängigkeiten von nicht heruntergeladen bekommen. Blick für das Artefakt, wo die unfound Klasse befindet, und geben Sie diese in Ihrem pom.xml,, das sollte das problem lösen.