使用处理 java , java.lang.IllegalAccessException

Using processing java , java.lang.IllegalAccessException

当运行处理代码如下:

package model;

import processing.core.*;

public class UsingProcessing extends PApplet {

    // The argument passed to main must match the class name
    
    // method for setting the size of the window
    public void settings(){
        size(500, 500);
    }

    // identical use to setup in Processing IDE except for size()
    public void setup(){
        background(0);
        stroke(255);
        strokeWeight(10);
    }

    // identical use to draw in Processing IDE
    public void draw(){
        line(0, 0, 500, 500);
    }
    public static void main(String[] args) {
     PApplet.main("model.UsingProcessing");
   }

}

我收到 java 运行时错误。

错误如下。具体来说,它指出 "class processing.core.PApplet (in module core) cannot access class model.UsingProcessing (in module Test) because module Test does not export model to module core"

java.lang.RuntimeException: java.lang.IllegalAccessException: class processing.core.PApplet (in module core) cannot access class model.UsingProcessing (in module CovidSchoolSimulation) because module CovidSchoolSimulation does not export model to module core
    at core/processing.core.PApplet.runSketch(PApplet.java:10227)
    at core/processing.core.PApplet.main(PApplet.java:10072)
    at core/processing.core.PApplet.main(PApplet.java:10054)
    at CovidSchoolSimulation/model.UsingProcessing.main(UsingProcessing.java:26)
Caused by: java.lang.IllegalAccessException: class processing.core.PApplet (in module core) cannot access class model.UsingProcessing (in module CovidSchoolSimulation) because module CovidSchoolSimulation does not export model to module core
    at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
    at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:489)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at core/processing.core.PApplet.runSketch(PApplet.java:10221)
    ... 3 more

core.jar文件在构建路径中,所以我不明白为什么它不起作用。

你的项目中有module-info.java吗?您看到的错误消息:

java.lang.RuntimeException: java.lang.IllegalAccessException: class processing.core.PApplet (in module core) cannot access class model.UsingProcessing (in module CovidSchoolSimulation) because module CovidSchoolSimulation does not export model to module core

表示核心(处理)模块无法对您的模块进行反射。当您在 PApplet.main("model.UsingProcessing"); 中传递 class 名称时,它会使用反射来实例化您的 class。您需要在 module-info.java 中执行类似的操作,以允许核心模块在您的模块 CovidSchoolSimulationTest 上使用反射,具体取决于你们中的哪个错误消息是正确的:

module CovidSchoolSimulation { 
    opens CovidSchoolSimulation to core;
}