In order to avoid illegal access warnings for jfxrt.jar I manually changed my classpath file to include access rules:
Wanted classpath entry
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
<accessrules>
<accessrule kind="accessible" pattern="javafx/**"/>
<accessrule kind="accessible" pattern="com/sun/javafx/**"/>
</accessrules>
</classpathentry>
If I execute my pom.xml file, the tag accessrule is removed and the new entry is
Classpath entry currently produced by pom.xml / M2E
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
This is because the information about the access rules is not included in my pom.xml file. How can I modify my pom.xml file to produce the wanted classpath file?
Can I do so using some configuration for the maven-compiler-plugin?
Or do I have to use some extra maven plugin to modify the classpath text file?
Or is it not possible to address this in the pom.xml file at all and I would have to write a feature request for M2E?
Here is a snippet from my pom.xml file (I use pom packaging):
Curent pom.xml entry for compile phase
<!-- ### COMPILE ### phase -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<!-- specify current java version here: -->
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<id>compile-execution</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>org.treez.test-compile-execution</id>
<phase>org.treez.test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
The reported classpath consists of references to JAR files cached in local Maven repository. Even the JAR artifact of the project is referenced from local Maven cache and not from the /target directory one or the other might expect.
Select the project and go to “Configure > Convert to Maven Project”. It will open up a new window to create a pom. xml file. We have to provide project configurations such as groupId, artifactId, packaging, etc.
Open the pom. xml file. under the project tag add <dependencies> as another tag, and google for the Maven dependencies.
groupId – a unique base name of the company or group that created the project. artifactId – a unique name of the project. version – a version of the project.
I found a workaround to repair my .classfile. Two steps were required:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>prepare-package</phase>
<configuration>
<tasks>
<replace
token= "JavaSE-1.8">"
value="JavaSE-1.8"> <accessrules> <accessrule kind="accessible" pattern="javafx/**"/> <accessrule kind="accessible" pattern="com/sun/javafx/**"/> </accessrules>"
file=".classpath"
>
</replace>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>1.8</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
You are going at it the wrong way. The problem does not come from Maven but from Eclipse.
You should install the e(fx)clipse plugin. This will remove the illegal access warnings of Eclipse. There is no need to tweak the Maven configuration; just make sure you are compiling for JDK 8.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With