Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Directory separator should not appear in library name: Macintosh HD/Users/sakkisetty/Documents/dll/FasExtend.dll

Tags:

java

I use to load the dll library in java program it . show the error. like this Directory separator should not appear in library name:.

import java.sql.*;
/*
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
import com.sun.jna.Platform;
import com.sun.jna.*;*/

public class jdbc3
{
     public native void FasSendUserFromFasToFac();

    static
    {
        System.loadLibrary("Macintosh HD/Users/sakkisetty/Documents/dll/FasExtend");
    }

  /*  public interface simpleDLL extends Library
        {
            simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary((Platform.isWindows() ? "simpleDLL" : "simpleDLLLinuxPort"), simpleDLL.class);

    byte giveVoidPtrGetChar(Pointer param); // char giveVoidPtrGetChar(void* param);
    int giveVoidPtrGetInt(Pointer param);   //int giveVoidPtrGetInt(void* param);
    int giveIntGetInt(int a);               // int giveIntGetInt(int a);
    void simpleCall();

        }*/


    // JDBC driver name and database URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/somesh";

    //  Database credentials
    static final String USER = "root";
    static final String PASS = "";

    public static void main(String[] args)
    {

              jdbc3 jb=new jdbc3();
        jb.FasSendUserFromFasToFac();

        Connection conn = null;
        Statement stmt = null;
        try{
            //STEP 2: Register JDBC driver
            Class.forName("com.mysql.jdbc.Driver");

            //STEP 3: Open a connection
            // System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            System.out.println("Connecting to database...");
            //STEP 4: Execute a query
            System.out.println("Creating statement...");
            stmt = conn.createStatement();
            String sql;
            sql = " select id,image from images1 ";
            ResultSet rs  = stmt.executeQuery(sql);

            //STEP 5: Extract data from result set
            while(rs.next())
            {
                //Retrieve by column name
                System.out.println("\n");
                int no = rs.getInt("id");
                System.out.print("\t USER_I_ID: " +no);
                /*String std_name = rs.getString("name");
                 System.out.print(" \t First_name : " + std_name);
                 String std_course = rs.getString("course");
                 System.out.print(" \t course : " + std_course);*/
                Blob std_image = rs.getBlob("image");
                System.out.print(" \t std_images : SS" + std_image);
            }
        }

        catch(SQLException se)
        {
            //Handle errors for JDBC
            se.printStackTrace();
        }catch(Exception e)
        {
            //Handle errors for Class.forName
            e.printStackTrace();
        }finally
        {
            //finally block used to close resources
            try{
                if(stmt!=null)
                    stmt.close();
            }catch(SQLException se2){
            }// nothing we can do
            try{
                if(conn!=null)
                    conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }//end catch try

        }//end finally

    }//end main
}//end FirstExample

suppose i use the only system.load() it may show one type error . that is

Expecting an absolute path of the library: Macintosh HD/Users/sakkisetty/Documents/dll/FasExtend.dll

and use the full name system.loadlibrary() . it may show another type error. that is

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
   Directory separator should not appear in library name: 
      Macintosh HD/Users/sakkisetty/Documents/dll/FasExtend.dll

so i am using mac OS. please tell me solution for this problem.

like image 542
somesh Avatar asked Apr 02 '13 07:04

somesh


1 Answers

System.loadLibrary only accepts a filename and looks for the file in the current java paths available. You'll want to add the directory containing FasExtend.dll to your java path, then just use

    System.loadLibrary("FasExtend")

Similar to this post: Java native library System.loadLibrary fails with UnsatisfiedLinkError

like image 130
rdmcfee Avatar answered Sep 20 '22 01:09

rdmcfee