JAVA: compiler findet klassen innerhalb eines packages nicht?

  • hiho...
    hab ein riesen prob, java (kdk1.4.1) findet klassen innerhalb eines packages nicht wenn ich davon instanzen erzeuge...
    verstehs net so wirklich... kann damit nix machen, wenn alles im default-package steht funkt es...
    hatte das prob schonmal bei eprog, aber da dachte ich, es liegt an der eprog.jar (die macht ja viele saudumme dinge)

    ich krieg als compilermeldung "cannot resolve symbol class DbConnection
    location database.MyQuery

    hab auch schon versucht vor das DbConnection das package zu schreiben, also database.DbConnection
    dann sagt er halt "location package database"


    bitte helft mir rasch, wenn möglich!

    ---code---

    package database;
    import java.sql.*;
    public class MyQuery
    {
    ResultSet result;
    String sqlquery = null;
    Statement stmt;
    public MyQuery(String sqlquery)
    {
    this.sqlquery = sqlquery;
    this.createQuery(sqlquery);
    }

    public ResultSet createQuery(String sqlquery) throws Exception
    {
    try
    {
    DbConnection con = new DbConnection(); <-- hier krieg ich den fehler

    }
    catch(SQLException sqle)
    {
    System.out.println("Failed to connect to database" );
    }
    return result;
    }
    }

    package database;
    import java.sql.*;
    public class DbConnection
    {
    Connection con;
    public DbConnection()
    {
    .
    .
    .
    con = DriverManager.getConnection("jdbc:odbc:Theater" );
    System.out.println("Connecting to database..." );
    }
    catch(SQLException sqle)
    {
    System.out.println("Failed to connect to database" );
    }
    }
    /* close the connection */
    public void closeConnection() throws SQLException
    {
    try
    {
    con.close();
    }
    catch(SQLException sqle)
    {
    System.out.println("Failed to close connection" );
    }
    }
    }
    ---/code---

    "Von allen Dingen die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen"

  • Generell zu packages:
    Gib die .java in ein Verzeichniss das genauso heißt wies Package.
    zb. package klm

    ./abc
    ->
    ./abc/klm

    jetzt ist aber wichtig beim Classpath das Verzeichnis abc anzugeben und ned /abc/klm !!! Denn das Verzeichnis gilt schon als package.
    also am besten im /abc

    javac -classpath . [hierpathzumainmethode]
    java -classpath . [hierpathzumainclass(ohne'.class' )]

    Vielleicht löst das dein Problem.

    ach ja, weiters wo importierst du dein eigenes package? Das find ich im code nicht...

    mfg Zentor

  • das kuriose ist, dass es bei einer anderen klasse funktioniert...
    ich hab 2 packages...
    default --> gui, database
    im default liegt die main()
    von dort aus, ruf ich eine klasse in gui auf... das funktioniert super...
    diese ruft dann eine andere klasse im package gui auf, das funktioniert auch noch super... aber alle weiteren klassen werden nicht mehr gefunden
    also scheints nicht am classpath zu liegen...?
    und im package database finden sich die beiden klassen sowieso nicht... aber das hab ich eh schon geposted...

    "Von allen Dingen die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen"

  • ahjo, damit ich auch noch meinen Senf dazugeb: beim Arbeiten mit packages is oft auch hilfreich, wenn man im Classpath ".." dabei hat, weil dann findet er auch vom package-Verzeichnis aus das package.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!