List:MySQL and Java« Previous MessageNext Message »
From:Michel Maria-Sube Date:June 18 2009 5:23pm
Subject:Re: solving paths on the jdbc archive (SOLVED)
View as plain text  
The classpath must be also declared in the manifest, otherwise Class.forName() is unable
to find complete path for the class
Works fine now

--- On Thu, 6/18/09, Federico Alcantara <federico.alcantara@stripped> wrote:

> From: Federico Alcantara <federico.alcantara@stripped>
> Subject: Re: solving paths on the jdbc archive
> To: "Michel Maria-Sube" <mgms1@stripped>
> Date: Thursday, June 18, 2009, 2:07 AM
> Michel,
> can you post the file structure?
> Anyway, you can  have the mysql connector jar in the
> same directory as your jar. In such way your classpath
> prefix will be simple ./
> For example:
> 
>     yourarchive.jar
>        
> mysql-connector-java-5.1.6-bin.jar
> 
> To run your application (assuming Main.java is your
> application launcher class)
>     java -cp
> ./;./mysql-connector-java-5.1.6-bin -jar yourarchive.jar
> Main
> 
> Normally additional jars are put in a lib subdirectory, for
> example the folder structure can be as follow:
>      + yourarchive.jar
>      |
>      ---- lib
>           |
>           +
> mysql-connector-java-5.1.6-bin.jar
> Now your classpath will be prefixed with ./lib/
>     java -cp
> ./;./lib/mysql-connector-java-5.1.6-bin -jar yourarchive.jar
> Main
> 
> You can set your classpath with the values previously shown
> in the -cp option.
> 
> You must make sure that:
> 1) The jar are EXACTLY located in the directory that you
> are specified in the classpath, they are CASE sensitive.
> 2) That you have at least read/execute access to those
> directories.
> 
> Hope this helps!
> 
> 
> On Jun 16, 2009, at 6:15 PM, Michel Maria-Sube wrote:
> 
> > 
> > Thank you for this reply but I'm currently working
> under Linux with version 1.5.0_15 of the JDK, well maybe my
> classpath variable is not correctly set; it is set as:
>
/usr/share/jdbc/mysql-connector-java-5.1.6-bin.jar:/usr/share/tomcat/apache-tomcat-6.0.18/lib/servlet-api.jar
> > 
> > Something is missing?? I don't know equivalent of
> \jarfiles\log4j-1.2.8.jar under Linux
> > 
> > Thank you for suggestions
> > Regards
> > Michel
> > 
> > On 4/19/09, Douglas Nelson <Douglas.Nelson@stripped>
> wrote:
> >> This is the classpath I set:
> >> 
> >>
>
classpath=.;c:\;c:\download\java\commons-logging-1.0.4.jar;c:\jarfiles\log4j-1.2.8.jar;c:\jarfiles\mysql-connector-java-5.1.5-bin.jar;
> >> 
> >> this is the code I use to connect to a MySql
> database
> >>
> //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >> // start getConnection
> >>
> //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >>   /**
> >>    * Creates a new connection to the
> database
> >>    * @return the connection object
> >>    */
> >>   private Connection
> getConnection() throws Exception{
> >>      logger.info("getConnection
> called");
> >>      //------------------------
> >>      // Load up the jdbc driver
> >>      //------------------------
> >>      try {
> >>     
>    Class.forName("com.mysql.jdbc.Driver").newInstance();
> >>      } // end try
> >>      catch (Exception any) {
> >>     
>    logger.error("Unable to load driver. [" +
> any.getMessage() + "]");
> >>         throw(any);
> >>      } // end catch
> >> 
> >>     
> return(DriverManager.getConnection("jdbc:mysql://" +
> mysql_host +
> >> ":" + mysql_port +"/" + mysql_database + "?user="
> + mysql_user +
> >> "&password=" + mysql_password));
> >> 
> >>   } // end getConnection
> >> 
> >> 
> >> 
> >> Michel Maria-Sube wrote:
> >>> hello,
> >>> 
> >>> I'm working on an application connecting with
> mysql5, considering that
> >>> $CLASSPATH is correctly set and piece of code
> for connection is as
> >>> follows:
> >>> 
> >>>    public void connectDB( String
> DBname, String user, String passwd ) {
> >>>        java.sql.Connection
> conn = null;
> >>>        String   
> url = null;
> >>> 
> >>>        try {
> >>>           
> Class.forName("com.mysql.jdbc.Driver").newInstance();
> >>>        }
> >>>        catch
> (ClassNotFoundException cnfe) {
> >>>           
> System.out.println("\nClassNotFoundException occured");
> >>>           
> System.out.println("connection with the DB is not
> possible");
> >>>           
> cnfe.printStackTrace();
> >>>           
> System.exit(ERROR);
> >>>        }
> >>>        catch
> (InstantiationException ie) {
> >>>           
> System.out.println("InstantiationException occured");
> >>>           
> System.out.println("connection with the DB is not
> possible");
> >>>           
> System.exit(ERROR);
> >>>        }
> >>>        catch
> (IllegalAccessException iae) {
> >>>           
> System.out.println("IllegalAccessException occured");
> >>>           
> System.out.println("connection with the DB is not
> possible");
> >>>           
> System.exit(ERROR);
> >>>        }
> >>>        try {
> >>>            url =
> new
> >>>
> String("jdbc:mysql://localhost/"+DBname+"?user="+user+"&password="+passwd);
> >>> .......................
> >>> 
> >>> Execution gives following exception:
> >>> 
> >>> ClassNotFoundException occured
> >>> connection with the DB is not possible
> >>> java.lang.ClassNotFoundException:
> com.mysql.jdbc.Driver
> >>>        at
> java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> >>>        at
> java.security.AccessController.doPrivileged(Native Method)
> >>>        at
> java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> >>>        at
> java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> >>>        at
> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
> >>>        at
> java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> >>>        at
> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> >>>        at
> java.lang.Class.forName0(Native Method)
> >>>        at
> java.lang.Class.forName(Class.java:169)
> >>>        at
> MainFrame.connectDB(MainFrame.java:290)
> >>>        at
> MainFrame.createMainScreen(MainFrame.java:260)
> >>>        at
> MainFrame.<init>(MainFrame.java:68)
> >>>        at
> MainFrame.main(MainFrame.java:1049)
> >>> 
> >>> This behavior disapears if I update the jar
> archive for executable with
> >>> classes content in the jdbc archive but of
> course I don't want to do that;
> >>> does anybody could indicate me why java is
> anable to solve correctly paths
> >>> in the jdbc archive?
> >>> 
> >>> Thank you in advance
> >>> Regards
> >>> M.
> > 
> > --MySQL Java Mailing List
> > For list archives: http://lists.mysql.com/java
> > To unsubscribe:    http://lists.mysql.com/java?unsub=1
> > 
> 
> Federico Alcantara
> federico_alcantara@stripped
> 
> 
> 
> 
Thread
Re: solving paths on the jdbc archive (SOLVED)Michel Maria-Sube18 Jun 2009