# Bibliothek in package nicht sichtbar



## acevik94 (8. Okt 2017)

Hallo zusammen ,
Ich habe meine eigene Bibliothek(eine .jar Datei, die keine main-Methode hat!).
in ein neues Projekt eingebunden. Jetzt habe ich folgendes Problem: wenn ich in
dem neuen Projekt die Klassen in der default-package drin lasse, kann ich auf
die Methoden in meiner Bibliothek zugreifen. Wenn ich sie aber in unterschiedliche
Packeges verteile, kann ich nicht mehr auf die Methoden in der Bib. zugreifen.
Wie kann ich dieses Problem fixen?
Ps: Meine .jar-Datei hat nur eine Klasse, die in der default-package drin liegt.
Damit ihr besser versteht, was ich meine, habe ich 2 Screenshoots gemacht:
http://www.bilder-upload.eu/show.php?file=fdcfc5-1507421002.png
Wie ihr seht, habe ich die Main-Klasse in eine Package und ich habe keinen Zugriff auf die Methoden.

http://www.bilder-upload.eu/show.php?file=72c725-1507421027.png
Hier habe ich die Main-Klasse in der Defaultpackage und hier habe ich Zugriff auf die Methoden.


----------



## mrBrown (8. Okt 2017)

Vermutlich sind die Klassen in deiner Bibliothek nicht public. ist aber so ohne Code nur geraten.

So ganz generell: lass nichts im default-package liegen.


----------



## acevik94 (8. Okt 2017)

mrBrown hat gesagt.:


> Vermutlich sind die Klassen in deiner Bibliothek nicht public. ist aber so ohne Code nur geraten.
> 
> So ganz generell: lass nichts im default-package liegen.


Vielen Dank für die schnelle Antwort. Die Methoden in der Bibliothek sind alle public static.


----------



## mrBrown (8. Okt 2017)

acevik94 hat gesagt.:


> Vielen Dank für die schnelle Antwort. Die Methoden in der Bibliothek sind alle public static.


Deshalb schrieb ich auch:


mrBrown hat gesagt.:


> Vermutlich sind die *Klassen* in deiner Bibliothek nicht public




(Das rot unterstrichene liefert btw eine Fehlermeldung, die meistens den Grund nennt...)


----------



## acevik94 (8. Okt 2017)

acevik94 hat gesagt.:


> Vielen Dank für die schnelle Antwort. Die Methoden in der Bibliothek sind alle public static.


Hier ist der Quellcode:


```
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;

/**
* Basic output class which contains different dialogs.<br>
* It also uses html so you can break your lines <br>
* To change the font please use the setFont(Font f) function
* */
public class Output{
   
    private static JLabel lbl;
    private static Font font;
   
    /**
     * Inits output <br>
     * Creates a new label and sets its font, which can be changed<br>
     * Standard font: Arial, Bold, 35
     * */
    public static void init(){
        font = new Font("Arial", Font.BOLD, 35);
        //enlarges the button!!
        UIManager.put("OptionPane.buttonFont", new FontUIResource(font));
        lbl = new JLabel();
        lbl.setFont(font);
        lbl.setBorder(null);
        lbl.setHorizontalAlignment(SwingConstants.LEFT);
        lbl.setVerticalAlignment(SwingConstants.NORTH);
    }
   
    /**
     * Shows a basic message dialog
     * @param msg message to show
     * @param title msg' s title
     * */
    public static void showMessageBox(String msg, String title){
        lbl.setText("<html>" + msg + "</html>");
        JOptionPane.showMessageDialog(lbl, title);
    }
   
    /**
     * Shows an info message dialog
     * @param msg message to show
     * @param title msg' s title
     * */
    public static void showInfoMessageBox(String msg, String title){
        lbl.setText("<html>" + msg + "</html>");
        JOptionPane.showMessageDialog(null, lbl, title, JOptionPane.INFORMATION_MESSAGE);
    }
   
    /**
     * Shows a warning message dialog
     * @param msg message to show
     * @param title msg' s title
     * */
    public static void showWarningMessageBox(String msg, String title){
        lbl.setText("<html>" + msg + "</html>");
        JOptionPane.showMessageDialog(null, lbl, title, JOptionPane.WARNING_MESSAGE);
    }
   
    /**
     * Shows an error message dialog
     * @param msg message to show
     * @param title msg' s title
     * */
    public static void showErrorMessageBox(String msg, String title){
        lbl.setText("<html>" + msg + "</html>");
        JOptionPane.showMessageDialog(null, lbl, title, JOptionPane.ERROR_MESSAGE);
    }
   
    /**
     * Shows an input message dialog type int
     * @param msg message to show
     * @param title msg' s title
     * @return input if valid
     * @return showIntInputBox(msg, title) if not vaild
     * */
    public static int showIntInputBox(String msg, String title){
        lbl.setText("<html>" + msg + "</html>");
        String input = JOptionPane.showInputDialog(null, lbl, title);
        try{
            return Integer.parseInt(input);
        }catch(NumberFormatException e){
            return showIntInputBox(msg, title);
        }
    }
   
    /**
     * Shows an input message dialog type String
     * @param msg message to show
     * @param title msg' s title
     * @return input if valid
     * @return showStringInputBox(msg, title) if not vaild
     * */
    public static String showStringInputBox(String msg, String title){
        lbl.setText("<html>" + msg + "</html>");
        String input = JOptionPane.showInputDialog(null, lbl, title);
        if(input != null){
            return input;
        }
        return showStringInputBox(msg, title);
    }
   
    /**
     * Writes the msg into console
     * @param msg message to write
     * */
    public static void writeIntoConsole(String msg){
        System.out.println(msg);
    }
   
    /**
     * Sets the new Font
     * @param f Font
     * */
    public void setFont(Font f){
        font = f;
    }

}
```


----------



## acevik94 (8. Okt 2017)

mrBrown hat gesagt.:


> Deshalb schrieb ich auch:


Ich soll sie also nur public machen und nicht static? Verstehe ich dich richtig?


----------



## mrBrown (8. Okt 2017)

Oh, irgendwie nicht bedacht: lieg am Default-package.
Das kann nicht importiert werden (hat ja keinen Namen), und ist daher auch nur aus dem Default-package erreichbar.

Also, schieb das in ein sinnvoll bekanntes package und alles funktioniert


----------



## acevik94 (8. Okt 2017)

Alles klar. Ich versuche es  Vielen Dank für die Antwort


----------



## acevik94 (8. Okt 2017)

Klappts


----------

