SecurityException для OpenGL при использовании LWJGL с Maven - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь использовать код здесь , чтобы создать простой 3D-проект с LWJGL, но код использует затмение с загруженными банками, но я хочу использовать maven для достижения своих целей.

Вот мой POM:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cubtest</groupId>
  <artifactId>LwjglTest</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>LwjglTest</name>
  <url>http://maven.apache.org</url><properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <natives.version>0.0.6</natives.version>
    <lwjgl.version>3.0.0</lwjgl.version>
      <junit.version>4.10</junit.version>
  </properties>
  <repositories>
      <repository>
          <id>mavenNatives</id>
          <name>Maven Natives Repository</name>
          <url>http://mavennatives.googlecode.com/svn/repo</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
      </repository>
  </repositories>
  <dependencies>
    <dependency>
        <groupId>org.slick2d</groupId>
        <artifactId>slick2d-core</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>java3d</groupId>
        <artifactId>vecmath</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.lwjgl</groupId>
      <artifactId>lwjgl</artifactId>
      <version>${lwjgl.version}</version>
    </dependency>
    <dependency>
      <groupId>org.lwjgl</groupId>
      <artifactId>lwjgl-platform</artifactId>
      <version>${lwjgl.version}</version>
      <classifier>natives-windows</classifier>
    </dependency>
    <dependency>
      <groupId>org.lwjgl</groupId>
      <artifactId>lwjgl-platform</artifactId>
      <version>${lwjgl.version}</version>
      <classifier>natives-osx</classifier>
    </dependency>
    <dependency>
      <groupId>org.lwjgl</groupId>
      <artifactId>lwjgl-platform</artifactId>
      <version>${lwjgl.version}</version>
      <classifier>natives-linux</classifier>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
              <source>1.8</source>
              <target>1.8</target>
          </configuration>
      </plugin>
      <plugin>
          <groupId>com.googlecode.mavennatives</groupId>
          <artifactId>maven-nativedependencies-plugin</artifactId>
          <version>${natives.version}</version>
            <executions>
                <execution>
                    <id>unpacknatives</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <!-- suppress MavenModelInspection (this line is for IDEA) -->
                        <goal>copy</goal>
                    </goals>
                </execution>
            </executions>
      </plugin>
    </plugins>
    </build>
</project>

Я также должен был изменить код с помощью

System.setProperty("org.lwjgl.librarypath", "target/natives/");

, чтобы убедиться, что он может найти туземцев, используя this .К сожалению, я получил эту ошибку: Исключение в потоке "main"

java.lang.SecurityException: sealing violation: can't seal package org.lwjgl.opengl: already loaded
    at java.net.URLClassLoader.getAndVerifyPackage(URLClassLoader.java:406)
    at java.net.URLClassLoader.definePackageInternal(URLClassLoader.java:419)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:451)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.lwjgl.opengl.GLCapabilities.<init>(GLCapabilities.java:5904)
    at org.lwjgl.opengl.GL.createCapabilities(GL.java:421)
    at org.lwjgl.opengl.GL.createCapabilities(GL.java:296)
    at com.cubtest.engine.io.Window.create(Window.java:50)
    at com.cubtest.main.Main.run(Main.java:16)
    at com.cubtest.main.Main.main(Main.java:59)

Я обнаружил this , что, кажется, указывает на то, что я загружаю два одинаковых фляги одновременноно я использую Maven, поэтому я понятия не имею, где банки можно найти еще меньше, чем я бы сделал, если бы я их нашел.

...