# [NetBeans] Fehler mit einem eingebundenen Package



## JAVAn00b (7. Apr 2007)

Hall zusammen,

ich habe ein Package bzw. eine JAR Datei eingebunden, das xhtml und normale html Seiten mit CSS Perfekt anzeigt.
Das Problem ist einfach das, dass Beispiel Programm nicht Funktioniert.

Hier der Fehler

```
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jdic in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1030)
        at org.jdesktop.jdic.browser.internal.WebBrowserUtil$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.jdesktop.jdic.browser.internal.WebBrowserUtil.loadLibrary(Unknown Source)
        at org.jdesktop.jdic.browser.internal.WebBrowserUtil.getDefaultBrowserPath(Unknown Source)
        at org.jdesktop.jdic.browser.BrowserEngineManager.selectEngine(Unknown Source)
        at org.jdesktop.jdic.browser.BrowserEngineManager.getActiveEngine(Unknown Source)
        at muster.Browser.jbInit(Browser.java:177)
        at muster.Browser.<init>(Browser.java:73)
        at muster.Browser.main(Browser.java:89)
```

Hier das Programm


```
/*
 * NewClass.java
 *
 * Created on 26. März 2007, 12:39
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package muster;
/*
 * Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved. Use is
 * subject to license terms.
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the Lesser GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 * USA.
 */ 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.SwingConstants;
import java.io.File;
import java.net.URL;
import java.net.MalformedURLException;

import org.jdesktop.jdic.browser.*;


/**
 * JDIC API demo main class.
 * 


 * <code>Browser</code> is a GUI application demonstrating the usage of the JDIC API package 
 * <code>org.jdesktop.jdic.browser</code> (Browser component).
 */

public class Browser extends JPanel {

    BorderLayout borderLayout1 = new BorderLayout();

    JToolBar jBrowserToolBar = new JToolBar();
    JButton jStopButton = new JButton("Stopp");

    JButton jRefreshButton = new JButton("Refresh");
    JButton jForwardButton = new JButton("Forward");
    JButton jBackButton = new JButton("Back");

    JPanel jAddressPanel = new JPanel();
    JLabel jAddressLabel = new JLabel();
    JTextField jAddressTextField = new JTextField();
    JButton jGoButton = new JButton();
    JPanel jAddrToolBarPanel = new JPanel();
    MyStatusBar statusBar = new MyStatusBar();
    JPanel jBrowserPanel = new JPanel();

    IWebBrowser webBrowser;

    public Browser() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {}

        JFrame frame = new JFrame("JDIC API Demo - Browser");

        Container contentPane = frame.getContentPane();

        contentPane.setLayout(new GridLayout(1, 1));
        contentPane.add(new Browser());

        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        frame.pack();
        frame.setVisible(true);
    }

    private void jbInit() throws Exception {
        this.setLayout(borderLayout1);

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        this.setPreferredSize(new Dimension(screenSize.width * 9 / 10,
                screenSize.height * 8 / 10));

        ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);

        jAddressLabel.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 4));
        jAddressLabel.setToolTipText("");
        jAddressLabel.setText(" URL: ");

        jGoButton.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(0,
                2, 0, 2),
                new EtchedBorder()));
        jGoButton.setMaximumSize(new Dimension(60, 25));
        jGoButton.setMinimumSize(new Dimension(60, 25));
        jGoButton.setPreferredSize(new Dimension(60, 25));
        jGoButton.setToolTipText("Load the given URL");
        jGoButton.setText("GO");
        jGoButton.addActionListener(new MyBrowser(this));
        jAddressPanel.setLayout(new BorderLayout());

        jAddressTextField.addActionListener(new Browser_jAddressTextField_actionAdapter(this));
        jBackButton.setToolTipText("Go back one page");
        jBackButton.setHorizontalTextPosition(SwingConstants.TRAILING);
        jBackButton.setEnabled(false);
        jBackButton.setMaximumSize(new Dimension(75, 27));
        jBackButton.setPreferredSize(new Dimension(75, 27));
        jBackButton.addActionListener(new Browser_jBackButton_actionAdapter(this));
        jForwardButton.setToolTipText("Go forward one page");
        jForwardButton.setEnabled(false);
        jForwardButton.addActionListener(new Browser_jForwardButton_actionAdapter(this));
        jRefreshButton.setToolTipText("Reload current page");
        jRefreshButton.setEnabled(true);
        jRefreshButton.setMaximumSize(new Dimension(75, 27));
        jRefreshButton.setMinimumSize(new Dimension(75, 27));
        jRefreshButton.setPreferredSize(new Dimension(75, 27));
        jRefreshButton.addActionListener(new Browser_jRefreshButton_actionAdapter(this));
        jStopButton.setToolTipText("Stop loading this page");
        jStopButton.setVerifyInputWhenFocusTarget(true);
        jStopButton.setText("Stop");
        jStopButton.setEnabled(true);
        jStopButton.setMaximumSize(new Dimension(75, 27));
        jStopButton.setMinimumSize(new Dimension(75, 27));
        jStopButton.setPreferredSize(new Dimension(75, 27));
        jStopButton.addActionListener(new Browser_jStopButton_actionAdapter(this));
        jAddressPanel.add(jAddressLabel, BorderLayout.WEST);
        jAddressPanel.add(jAddressTextField, BorderLayout.CENTER);
        jAddressPanel.add(jGoButton, BorderLayout.EAST);
        jAddressPanel.setBorder(BorderFactory.createCompoundBorder(
            BorderFactory.createEtchedBorder(),
            BorderFactory.createEmptyBorder(2, 0, 2, 0)));

        jBrowserToolBar.setFloatable(false);
        jBrowserToolBar.add(jBackButton, null);
        jBrowserToolBar.add(jForwardButton, null);
        jBrowserToolBar.addSeparator();
        jBrowserToolBar.add(jRefreshButton, null);
        jBrowserToolBar.add(jStopButton, null);
        jBrowserToolBar.setBorder(BorderFactory.createCompoundBorder(
            BorderFactory.createEtchedBorder(),
            BorderFactory.createEmptyBorder(2, 2, 2, 0)));

        jAddrToolBarPanel.setLayout(new BorderLayout());
        jAddrToolBarPanel.add(jAddressPanel, BorderLayout.CENTER);
        jAddrToolBarPanel.add(jBrowserToolBar, BorderLayout.WEST);
        jAddrToolBarPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 2, 0));

        statusBar.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0));
        statusBar.lblDesc.setText("JDIC API Demo - Browser");

        try {
            BrowserEngineManager bem = BrowserEngineManager.instance();
            webBrowser = bem.getActiveEngine().getWebBrowser();
            webBrowser.setURL(new URL("http://java.net"));

            // Print out debug messages in the command line.
            //webBrowser.setDebug(true);
        } catch (MalformedURLException e) {
            System.out.println(e.getMessage());
            return;
        }

        webBrowser.addWebBrowserListener(new WebBrowserListener() {
            public void downloadStarted(WebBrowserEvent event) {
                updateStatusInfo("Loading started.");
            }
						public void initializationCompleted(WebBrowserEvent event){;}
            public void downloadCompleted(WebBrowserEvent event) {
                jBackButton.setEnabled(webBrowser.isBackEnabled());
                jForwardButton.setEnabled(webBrowser.isForwardEnabled());

                updateStatusInfo("Loading completed.");

                URL currentUrl = webBrowser.getURL();

                if (currentUrl != null) {
                    jAddressTextField.setText(currentUrl.toString());
                }
            }

            public void downloadProgress(WebBrowserEvent event) {
                // updateStatusInfo("Loading in progress...");
            }

            public void downloadError(WebBrowserEvent event) {
                updateStatusInfo("Loading error.");
            }

            public void documentCompleted(WebBrowserEvent event) {
                updateStatusInfo("Document loading completed.");
            }

            public void titleChange(WebBrowserEvent event) {
                updateStatusInfo("Title of the browser window changed.");
            }  

            public void statusTextChange(WebBrowserEvent event) {
                // updateStatusInfo("Status text changed.");
            } 
            public void windowClose(WebBrowserEvent event) {;} 
        });

        jBrowserPanel.setLayout(new BorderLayout());
        jBrowserPanel.add(webBrowser.asComponent(), BorderLayout.CENTER);				

        this.add(jAddrToolBarPanel, BorderLayout.NORTH);
        this.add(statusBar, BorderLayout.SOUTH);
        this.add(jBrowserPanel, BorderLayout.CENTER);
    }

    void updateStatusInfo(String statusMessage) {
        statusBar.lblStatus.setText(statusMessage);
    }

    /**
     * Check the current input URL string in the address text field, load it,
     * and update the status info and toolbar info.
     */
    void loadURL() {
        String inputValue = jAddressTextField.getText();

        if (inputValue == null) {
            JOptionPane.showMessageDialog(this, "The given URL is NULL:",
                    "Warning", JOptionPane.WARNING_MESSAGE);
        } else {
            // Check if the text value is a URL string.
            URL curUrl = null;

            try {
                // Check if the input string is a local path by checking if it starts
                // with a driver name(on Windows) or root path(on Unix).               
                File[] roots = File.listRoots();

                for (int i = 0; i < roots.length; i++) {
                    if (inputValue.toLowerCase().startsWith(roots[i].toString().toLowerCase())) {
                        File curLocalFile = new File(inputValue);

                        curUrl = curLocalFile.toURL();
                        break;
                    }
                }

                if (curUrl == null) {
                    // Check if the text value is a valid URL.
                    try {
                        curUrl = new URL(inputValue);
                    } catch (MalformedURLException e) {
                            if (inputValue.toLowerCase().startsWith("ftp.")) {
                                curUrl = new URL("ftp://" + inputValue);
                            } else if (inputValue.toLowerCase().startsWith("gopher.")) {
                                curUrl = new URL("gopher://" + inputValue);
                            } else {
                                curUrl = new URL("http://" + inputValue);
                            }
                    }
                }
                            
                webBrowser.setURL(curUrl);

                // Update the address text field, statusbar, and toolbar info.
                updateStatusInfo("Loading " + curUrl.toString() + " ......");

            } catch (MalformedURLException mue) {
                JOptionPane.showMessageDialog(this,
                    "The given URL is not valid:" + inputValue, "Warning",
                    JOptionPane.WARNING_MESSAGE);
            }                
        }
    }

    void jGoButton_actionPerformed(ActionEvent e) {
        loadURL();
    }

    void jAddressTextField_actionPerformed(ActionEvent e) {
        loadURL();
    }

    void jBackButton_actionPerformed(ActionEvent e) {
        webBrowser.back();
    }

    void jForwardButton_actionPerformed(ActionEvent e) {
        webBrowser.forward();
    }

    void jRefreshButton_actionPerformed(ActionEvent e) {
        webBrowser.refresh();
    }

    void jStopButton_actionPerformed(ActionEvent e) {
        webBrowser.stop();
    }
}


class Browser_jAddressTextField_actionAdapter implements java.awt.event.ActionListener {
    Browser adaptee;

    Browser_jAddressTextField_actionAdapter(Browser adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jAddressTextField_actionPerformed(e);
    }
}


class Browser_jBackButton_actionAdapter implements java.awt.event.ActionListener {
    Browser adaptee;

    Browser_jBackButton_actionAdapter(Browser adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jBackButton_actionPerformed(e);
    }
}


class Browser_jForwardButton_actionAdapter implements java.awt.event.ActionListener {
    Browser adaptee;

    Browser_jForwardButton_actionAdapter(Browser adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jForwardButton_actionPerformed(e);
    }
}


class Browser_jRefreshButton_actionAdapter implements java.awt.event.ActionListener {
    Browser adaptee;

    Browser_jRefreshButton_actionAdapter(Browser adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jRefreshButton_actionPerformed(e);
    }
}


class Browser_jStopButton_actionAdapter implements java.awt.event.ActionListener {
    Browser adaptee;

    Browser_jStopButton_actionAdapter(Browser adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jStopButton_actionPerformed(e);
    }
}


class MyBrowser implements java.awt.event.ActionListener {
    Browser adaptee;

    MyBrowser(Browser adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jGoButton_actionPerformed(e);
    }
}
```

Ich hoffe ihr könnt mir helfen da ich noch nie mit einem externen JAR Datei gearbeitet habe.

Eingebunden habe ich es ganz normal mit Rechtklick auf Libariers und Add Libarary...

IDE: NetBeans 5.5

Gruß


----------



## L-ectron-X (7. Apr 2007)

Mach mal ein komplettes Rebuild mit [Shift]+[F11].
Und wenn du in das /dist/lib-Verzeichnis guckst müsste sich dann da deine JDIC-Jar befinden.


----------



## JAVAn00b (7. Apr 2007)

nö dort gibts nur die JAR Datei.


----------



## L-ectron-X (7. Apr 2007)

Dann hast du zwar NetBeans gesagt, wo es JDIC finden kann, aber noch nicht, dass es auch verwendet werden soll.


----------



## JAVAn00b (7. Apr 2007)

macht man das nicht durch die import anweisung?

Wie mach ich das denn?

Gruß


----------



## JAVAn00b (7. Apr 2007)

Mit add JAR / Folder geht es auch nicht...
Ich weiß echt nicht mehr weiter.


----------



## L-ectron-X (7. Apr 2007)

Hmm, du hast beides probiert? Also "Add Libary" und "Add Jar"?
Kannst du die entsprechende Bibliothek unter Libaries im Project Properties Fenster sehen?
Dann braucht diese nur noch importiert werden, da hast du Recht.
Und wenn du ein Rebuild machst, sollte die Libary auch mit ins lib-Verzeichnis kopiert werden und die Verknüpfung mit deinem Projekt stehen.


----------



## JAVAn00b (7. Apr 2007)

also ich sehe die verknüpfung...

und unter properities kann man die auch sehen. aber es gibt immer noch diesen fehler. 

und nach dem rebuild auch....

nach dem rebuild


```
init:
deps-clean:
Deleting directory C:\Dokumente und Einstellungen\Admin\Desktop\HTML Generator\build
Deleting directory C:\Dokumente und Einstellungen\Admin\Desktop\HTML Generator\dist
clean:
init:
deps-jar:
Created dir: C:\Dokumente und Einstellungen\Admin\Desktop\HTML Generator\build\classes
Compiling 22 source files to C:\Dokumente und Einstellungen\Admin\Desktop\HTML Generator\build\classes
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
compile:
Created dir: C:\Dokumente und Einstellungen\Admin\Desktop\HTML Generator\dist
Building jar: C:\Dokumente und Einstellungen\Admin\Desktop\HTML Generator\dist\HTML_Generator.jar
jar:
BUILD SUCCESSFUL (total time: 52 seconds)
```


----------



## JAVAn00b (8. Apr 2007)

hab da mal eine frage welche jar dateien muß ich überhaupt einbinden? Ich meine da gibt es immer soviele und ich habe einfach die jar datei genommen, die so hieß wie das "Add On".


----------



## L-ectron-X (8. Apr 2007)

Es wird offenbar kein lib-Verzeichnis mit der benötigten Jar-Datei angelegt.
Wenn du kein Fehler beim Kompilieren hast, ist alles an seinem Platz. Beim Build/Rebuild wird dann alles benötigte im dist-Verzeichnis angelegt.


----------



## JAVAn00b (8. Apr 2007)

hmmm aber es wird nichts ins DIST verzeichnis kopiert frag mich nicht warum. 

Muß ich bei netbeans noch irgendwas einstellen?


----------



## L-ectron-X (8. Apr 2007)

Ich bin mir nicht sicher. Ich habe jedenfalls nichts einstellen müssen, damit das funktioniert.
Frag doch mal im NetBeans-Foum nach, die können dir vielleicht schneller helfen.


----------



## JAVAn00b (8. Apr 2007)

hmmm,

kann mir einer erklären welche JAR Datei ich dort einbinden soll?
https://xhtmlrenderer.dev.java.net/index.html

ich finde nirgends was...


----------



## licht400 (10. Sep 2007)

Hi, 
habe auch so ein Problem und wie L-ectroni-x geschrieben hat, seh ich in meiner dist auch die jar.
j3dcore.jar
j3dutils.jar
vecmath.jar
durch import anweisungen kann ich auch auf diese jar zugreifen, aber beim compilieren kommt dieser fehler!

```
javax.media.j3d.NativePipeline getSupportedOglVendor
SCHWERWIEGEND: java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: getAWT
```


----------

