当前位置: 代码迷 >> J2SE >> 在java官网上下载的代码,运作不正常。Couldn't find file
  详细解决方案

在java官网上下载的代码,运作不正常。Couldn't find file

热度:94   发布时间:2016-04-23 20:01:11.0
在java官网上下载的代码,运行不正常。Couldn't find file:
一张图说明问题:

左红框圈的是所需的文件,下红框圈的是出错信息。
下面是java代码:
/*
 * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * - Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * - Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * - Neither the name of Oracle or the names of its
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package components;

/**
 * This application that requires the following additional files:
 * TreeDemoHelp.html
 * arnold.html
 * bloch.html
 * chan.html
 * jls.html
 * swingtutorial.html
 * tutorial.html
 * tutorialcont.html
 * vm.html
 */
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.UIManager;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import java.net.URL;
import java.io.IOException;
import java.awt.Dimension;
import java.awt.GridLayout;

public class TreeDemo extends JPanel implements TreeSelectionListener
{
/**
 * 
 */
private static final long serialVersionUID = 8903580730802730741L;
private JEditorPane htmlPane;
private JTree tree;
private URL helpURL;
private static boolean DEBUG = false;

// Optionally play with line styles. Possible values are
// "Angled" (the default), "Horizontal", and "None".
private static boolean playWithLineStyle = false;
private static String lineStyle = "Horizontal";

// Optionally set the look and feel.
private static boolean useSystemLookAndFeel = false;

public TreeDemo()
{
super(new GridLayout(1, 0));

// Create the nodes.
DefaultMutableTreeNode top = new DefaultMutableTreeNode(
"The Java Series");
createNodes(top);

// Create a tree that allows one selection at a time.
tree = new JTree(top);
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);

// Listen for when the selection changes.
tree.addTreeSelectionListener(this);

if (playWithLineStyle)
{
System.out.println("line style = " + lineStyle);
tree.putClientProperty("JTree.lineStyle", lineStyle);
}

// Create the scroll pane and add the tree to it.
JScrollPane treeView = new JScrollPane(tree);

// Create the HTML viewing pane.
htmlPane = new JEditorPane();
htmlPane.setEditable(false);
initHelp();
JScrollPane htmlView = new JScrollPane(htmlPane);

// Add the scroll panes to a split pane.
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.setTopComponent(treeView);
splitPane.setBottomComponent(htmlView);

Dimension minimumSize = new Dimension(100, 50);
htmlView.setMinimumSize(minimumSize);
treeView.setMinimumSize(minimumSize);
splitPane.setDividerLocation(100);
splitPane.setPreferredSize(new Dimension(500, 300));

// Add the split pane to this panel.
add(splitPane);
}

/** Required by TreeSelectionListener interface. */
public void valueChanged(TreeSelectionEvent e)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();

if (node == null) return;

Object nodeInfo = node.getUserObject();
if (node.isLeaf())
{
BookInfo book = (BookInfo) nodeInfo;
displayURL(book.bookURL);
if (DEBUG)
{
System.out.print(book.bookURL + ":  \n    ");
}
}
else
{
displayURL(helpURL);
}
if (DEBUG)
{
System.out.println(nodeInfo.toString());
}
}

private class BookInfo
{
public String bookName;
public URL bookURL;

public BookInfo(String book, String filename)
{
bookName = book;
bookURL = getClass().getResource(filename);
if (bookURL == null)
{
System.err.println("Couldn't find file: " + filename);
}
}

public String toString()
{
return bookName;
}
}

private void initHelp()
{
String s = "TreeDemoHelp.html";
helpURL = getClass().getResource(s);
if (helpURL == null)
{
System.err.println("Couldn't open help file: " + s);
}
else if (DEBUG)
{
System.out.println("Help URL is " + helpURL);
}

displayURL(helpURL);
}

private void displayURL(URL url)
{
try
{
if (url != null)
{
htmlPane.setPage(url);
}
else
{ // null url
htmlPane.setText("File Not Found");
if (DEBUG)
{
System.out.println("Attempted to display a null URL.");
}
}
}
catch (IOException e)
{
System.err.println("Attempted to read a bad URL: " + url);
}
}

private void createNodes(DefaultMutableTreeNode top)
{
DefaultMutableTreeNode category = null;
DefaultMutableTreeNode book = null;

category = new DefaultMutableTreeNode("Books for Java Programmers");
top.add(category);

// original Tutorial
book = new DefaultMutableTreeNode(new BookInfo(
"The Java Tutorial: A Short Course on the Basics",
"tutorial.html"));
category.add(book);

// Tutorial Continued
book = new DefaultMutableTreeNode(new BookInfo(
"The Java Tutorial Continued: The Rest of the JDK",
"tutorialcont.html"));
category.add(book);

// JFC Swing Tutorial
book = new DefaultMutableTreeNode(new BookInfo(
"The JFC Swing Tutorial: A Guide to Constructing GUIs",
"swingtutorial.html"));
category.add(book);

// Bloch
book = new DefaultMutableTreeNode(new BookInfo(
"Effective Java Programming Language Guide", "bloch.html"));
category.add(book);

// Arnold/Gosling
book = new DefaultMutableTreeNode(new BookInfo(
"The Java Programming Language", "arnold.html"));
category.add(book);

// Chan
book = new DefaultMutableTreeNode(new BookInfo(
"The Java Developers Almanac", "chan.html"));
category.add(book);

category = new DefaultMutableTreeNode("Books for Java Implementers");
top.add(category);

// VM
book = new DefaultMutableTreeNode(new BookInfo(
"The Java Virtual Machine Specification", "vm.html"));
category.add(book);

// Language Spec
book = new DefaultMutableTreeNode(new BookInfo(
"The Java Language Specification", "jls.html"));
category.add(book);
}

/**
 * Create the GUI and show it. For thread safety,
 * this method should be invoked from the
 * event dispatch thread.
 */
private static void createAndShowGUI()
{
if (useSystemLookAndFeel)
{
try
{
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
System.err.println("Couldn't use system look and feel.");
}
}

// Create and set up the window.
JFrame frame = new JFrame("TreeDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Add content to the window.
frame.add(new TreeDemo());

// Display the window.
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args)
{
// Schedule a job for the event dispatch thread:
// creating and showing this application's GUI.++-/
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}


其实不光这一个demo有问题,我下载的其他demo也是有相似的问题,如找不到图片等等。好奇怪,求大神么指导
------解决思路----------------------
目测路径不对。
------解决思路----------------------
路径问题。把文件放到classpath下试试
------解决思路----------------------
文件在类同目录下,或者前面加“/”
  相关解决方案