目录分隔符不应出现在库名称中:Macintosh HD / Users / sakkisetty / Documents / dll / FasExtend.dll

我用它来加载java程序中的dll库吧。 显示错误。 像这样目录分隔符不应出现在库名称中:

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 

假设我使用唯一的system.load()它可能会显示一个类型错误。 那是

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

并使用全名system.loadlibrary() 。 它可能会显示另一个类型错误。 那是

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

所以我使用的是mac OS。 请告诉我这个问题的解决方案。

System.loadLibrary只接受文件名并在当前可用的java路径中查找该文件。 您需要将包含FasExtend.dll的目录添加到您的java路径,然后使用

  System.loadLibrary("FasExtend") 

与此文章类似: Java本机库System.loadLibrary因UnsatisfiedLinkError而失败