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-Sube | 18 Jun 2009 |