Java 无法在另一个类中创建打印方法并在主类中调用它

Java 无法在另一个类中创建打印方法并在主类中调用它,java,class,object,applet,Java,Class,Object,Applet,我在一个名为tree的类中创建了此方法: public void printTree(Graphics g, int x, int y) { MediaTracker mt = new MediaTracker(this); tree = getImage(getCodeBase(), "tree.png"); mt.addImage(tree, 0); g.drawImage(tree, x, y, this); 我尝试在绘画方法中主要使用它: Tree tree = new Tree();

我在一个名为tree的类中创建了此方法:

public void printTree(Graphics g, int x, int y) {
MediaTracker mt = new MediaTracker(this);
tree = getImage(getCodeBase(), "tree.png");
mt.addImage(tree, 0);
g.drawImage(tree, x, y, this);
我尝试在绘画方法中主要使用它:

Tree tree = new Tree();
    tree.printTree(g, 60, 50);

我没有收到任何错误,但是当我运行应用程序时,会收到以下错误:

    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at Tree.printTree(Tree.java:12)
at Main.paint(Main.java:146)
at Main.update(Main.java:187)
at sun.awt.RepaintArea.updateComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

如果有人能帮助我,我将非常高兴。

您正在尝试使用一个空对象。使用调试器,找出哪个调试器,并找出如何确保它不为null,或修复使其为null的错误

小程序在小程序上下文中运行 是否由appletviewer提供 或浏览器页面。如果你运行一个 从主方法或加载 将小程序放入应用程序中 没有AppletContext和getCodeBase 将返回null。在这种情况下,你可以 使用备用/其他图像加载 方法

请使用另一种方法。

我没有收到任何错误,但是当我运行应用程序时,我会收到这些错误:


你可能是说没有编译器错误。NullPointerException是一个相当常见但严重的错误。您必须在使用对象之前初始化它们。

我们可以看到
getCodeBase()的内容吗
?这是Java文档告诉我的:URL Java.applet.applet.getCodeBase()getCodeBase public URL getCodeBase()获取基本URL。这是包含此小程序的目录的URL。返回:包含此小程序的目录的基本URL。另请参见:getDocumentBase(),当我使用:Tree-Tree=new-Tree()时,我以为我正在这样做;但是new Tree()可能会创建一个新的空树实例。@Deza:调用
getCodeBase()
方法时会引发异常。读我的答案。尝试以不同的方式添加图像,如果是这样的话,自己看看。