使用处理 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 中执行类似的操作,以允许核心模块在您的模块 CovidSchoolSimulation
或 Test
上使用反射,具体取决于你们中的哪个错误消息是正确的:
module CovidSchoolSimulation {
opens CovidSchoolSimulation to core;
}
当运行处理代码如下:
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 中执行类似的操作,以允许核心模块在您的模块 CovidSchoolSimulation
或 Test
上使用反射,具体取决于你们中的哪个错误消息是正确的:
module CovidSchoolSimulation {
opens CovidSchoolSimulation to core;
}