Java error: cannot cast to java.applet.Applet in Eclipse
Java error: cannot cast to java.applet.Applet in Eclipse
所以这里是不会在 Eclipse 中编译的非常简单的代码:
import processing.core.*;
public class MyPApplet extends PApplet {
}
我正在尝试 运行 它作为 Java 小程序,但我收到错误:
java.lang.ClassCastException: MyPApplet cannot be cast to java.applet.Applet
问题是 PApplet
是来自 processing
包的 class,它扩展了 java.applet.Applet
,MyPApplet
扩展了 PApplet
,但我仍然收到此错误。这没有道理。为什么不能将 MyPApplet
转换为 java.applet.Applet
?
有人可以帮忙吗?
处理中3.x PApplet 不再扩展 Applet:
Applet is gone — Java's java.awt.Applet is no longer the base class used by PApplet, so any sketches that make use of Applet-specific methods (or assume that a PApplet is a Java AWT Component object) will need to be rewritten.
来自 github 回购维基页面 Changes in 3.0
如果您需要小程序功能,请使用旧版本(2.2.1 或更早版本)。
正如 George 所说,PApplet
从处理 3 开始不再扩展 Applet
。
但是我建议使用 runSketch()
函数来 运行 您的草图,而不是回到旧版本的 Processing:
public class MyPapplet extends PApplet {
public static void main(String... args){
String[] pArgs = {"MyPapplet "};
MyPapplet mp = new MyPapplet ();
PApplet.runSketch(pArgs, mp);
}
public void settings() {
size(200, 100);
}
public void draw() {
background(255);
fill(0);
ellipse(100, 50, 10, 10);
}
}
如果您确实需要访问底层本机组件,则必须根据您使用的渲染器编写代码。以下是使用默认渲染器的方法:
PSurfaceAWT awtSurface = (PSurfaceAWT)mp.surface;
PSurfaceAWT.SmoothCanvas smoothCanvas = (PSurfaceAWT.SmoothCanvas)awtSurface.getNative();
但是第一种方法对大多数人来说应该足够好了,所以先试试吧。
以下是在 Eclipse 中处理 3.x 程序的模板。但是,您应该 运行 这些 'Java Application',而不是 'Java Applet':
import processing.core.PApplet;
public class P5Template extends PApplet {
public void settings() {
size(512, 200);
}
public void setup() {
}
public void draw() {
background(0, 30, 0);
}
public static void main(String[] args) {
PApplet.main(new String[] { P5Template.class.getName() });
}
}
所以这里是不会在 Eclipse 中编译的非常简单的代码:
import processing.core.*;
public class MyPApplet extends PApplet {
}
我正在尝试 运行 它作为 Java 小程序,但我收到错误:
java.lang.ClassCastException: MyPApplet cannot be cast to java.applet.Applet
问题是 PApplet
是来自 processing
包的 class,它扩展了 java.applet.Applet
,MyPApplet
扩展了 PApplet
,但我仍然收到此错误。这没有道理。为什么不能将 MyPApplet
转换为 java.applet.Applet
?
有人可以帮忙吗?
处理中3.x PApplet 不再扩展 Applet:
Applet is gone — Java's java.awt.Applet is no longer the base class used by PApplet, so any sketches that make use of Applet-specific methods (or assume that a PApplet is a Java AWT Component object) will need to be rewritten.
来自 github 回购维基页面 Changes in 3.0
如果您需要小程序功能,请使用旧版本(2.2.1 或更早版本)。
正如 George 所说,PApplet
从处理 3 开始不再扩展 Applet
。
但是我建议使用 runSketch()
函数来 运行 您的草图,而不是回到旧版本的 Processing:
public class MyPapplet extends PApplet {
public static void main(String... args){
String[] pArgs = {"MyPapplet "};
MyPapplet mp = new MyPapplet ();
PApplet.runSketch(pArgs, mp);
}
public void settings() {
size(200, 100);
}
public void draw() {
background(255);
fill(0);
ellipse(100, 50, 10, 10);
}
}
如果您确实需要访问底层本机组件,则必须根据您使用的渲染器编写代码。以下是使用默认渲染器的方法:
PSurfaceAWT awtSurface = (PSurfaceAWT)mp.surface;
PSurfaceAWT.SmoothCanvas smoothCanvas = (PSurfaceAWT.SmoothCanvas)awtSurface.getNative();
但是第一种方法对大多数人来说应该足够好了,所以先试试吧。
以下是在 Eclipse 中处理 3.x 程序的模板。但是,您应该 运行 这些 'Java Application',而不是 'Java Applet':
import processing.core.PApplet;
public class P5Template extends PApplet {
public void settings() {
size(512, 200);
}
public void setup() {
}
public void draw() {
background(0, 30, 0);
}
public static void main(String[] args) {
PApplet.main(new String[] { P5Template.class.getName() });
}
}