Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac OS X NetBeans上的sqlite4java Jar出现不满意的链接错误_Java_Macos_Sqlite_Unsatisfiedlinkerror - Fatal编程技术网

Mac OS X NetBeans上的sqlite4java Jar出现不满意的链接错误

Mac OS X NetBeans上的sqlite4java Jar出现不满意的链接错误,java,macos,sqlite,unsatisfiedlinkerror,Java,Macos,Sqlite,Unsatisfiedlinkerror,我遇到了与此问题类似的问题: 但是,我在Mac上运行,并且我的lib文件夹中有相关的库。但是,如果按原样运行,则会出现不满意的链接错误。如果运行“java-jar sqlite4java.jar-d”,则会得到以下输出: sqlite4java 282 130321:222850.424 FINE [sqlite] Internal: loading library 130321:222850.425 FINE [sqlite] Internal: java.library.path=/Use

我遇到了与此问题类似的问题:

但是,我在Mac上运行,并且我的lib文件夹中有相关的库。但是,如果按原样运行,则会出现不满意的链接错误。如果运行“java-jar sqlite4java.jar-d”,则会得到以下输出:

sqlite4java 282
130321:222850.424 FINE [sqlite] Internal: loading library
130321:222850.425 FINE [sqlite] Internal: java.library.path=/Users/mikey/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
130321:222850.425 FINE [sqlite] Internal: sqlite4java.library.path=null
130321:222850.425 FINE [sqlite] Internal: cwd=/Users/mikey/NetBeansProjects/Test/lib/.
130321:222850.425 FINE [sqlite] Internal: default path=/Users/mikey/NetBeansProjects/Test/lib
130321:222850.425 FINE [sqlite] Internal: forced path=null 
130321:222850.426 FINE [sqlite] Internal: os.name=mac os x; os=osx
130321:222850.426 FINE [sqlite] Internal: os.arch=x86_64
130321:222850.426 FINE [sqlite] Internal: trying to load sqlite4java-osx-x86_64
130321:222850.427 FINE [sqlite] Internal: cannot load sqlite4java-osx-x86_64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path
130321:222850.427 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64
130321:222850.428 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path
130321:222850.428 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4
130321:222850.431 INFO [sqlite] Internal: loaded sqlite4java-osx-10.4 from system path
130321:222850.433 INFO [sqlite] Internal: loaded sqlite 3.7.10, wrapper 0.2
SQLite 3.7.10
Compile-time options: ENABLE_COLUMN_METADATA ENABLE_FTS3 ENABLE_FTS3_PARENTHESIS ENABLE_LOCKING_STYLE=0 ENABLE_MEMORY_MANAGEMENT ENABLE_RTREE OMIT_DEPRECATED TEMP_STORE=1 THREADSAFE=1
我可以看到它正在寻找sqlite4java-osx-x86_64库,因此我随后运行了“ln-s libsqlite4java-osx.jnilib libsqlite4java-osx-x86_64.jnilib”和“ln-s libsqlite4java-osx-10.4.jnilibsqlite4java-osx-x86_64.jnilib”,这似乎有帮助:

sqlite4java 282
130321:223211.473 FINE [sqlite] Internal: loading library
130321:223211.474 FINE [sqlite] Internal: java.library.path=/Users/mikey/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
130321:223211.474 FINE [sqlite] Internal: sqlite4java.library.path=null
130321:223211.474 FINE [sqlite] Internal: cwd=/Users/mikey/NetBeansProjects/Test/lib/.
130321:223211.474 FINE [sqlite] Internal: default path=/Users/mikey/NetBeansProjects/Test/lib
130321:223211.474 FINE [sqlite] Internal: forced path=null 
130321:223211.475 FINE [sqlite] Internal: os.name=mac os x; os=osx
130321:223211.475 FINE [sqlite] Internal: os.arch=x86_64
130321:223211.475 FINE [sqlite] Internal: trying to load sqlite4java-osx-x86_64
130321:223211.477 INFO [sqlite] Internal: loaded sqlite4java-osx-x86_64 from system path
130321:223211.479 INFO [sqlite] Internal: loaded sqlite 3.7.10, wrapper 0.2
SQLite 3.7.10
Compile-time options: ENABLE_COLUMN_METADATA ENABLE_FTS3 ENABLE_FTS3_PARENTHESIS ENABLE_MEMORY_MANAGEMENT ENABLE_RTREE OMIT_DEPRECATED TEMP_STORE=1 THREADSAFE=1
看起来不错,对吧?不会。当我尝试运行java代码时,在尝试打开数据库时再次失败,出现了未满足的LinkError

我有什么明显的遗漏吗?以下是我的lib目录中相关部分的ls,作为一个健全性检查:

-rw-r--r--@  1 mikey  staff   466792  1 Mar  2012 libsqlite4java-android-armv7.so
-rw-r--r--@  1 mikey  staff   790986  1 Mar  2012 libsqlite4java-linux-amd64.so
-rw-r--r--@  1 mikey  staff   732637  1 Mar  2012 libsqlite4java-linux-i386.so
-rw-r--r--@  1 mikey  staff  1400368  1 Mar  2012 libsqlite4java-osx-10.4.jnilib
-rw-r--r--@  1 mikey  staff  1401592  1 Mar  2012 libsqlite4java-osx-ppc.jnilib
lrwxr-xr-x   1 mikey  staff       25 21 Mar 22:31 libsqlite4java-osx-x86_64.jnilib -> libsqlite4java-osx.jnilib
-rw-r--r--@  1 mikey  staff  1433640  1 Mar  2012 libsqlite4java-osx.jnilib
-rw-r--r--   1 mikey  staff      928 17 Mar 17:05 nblibraries.properties
drwxr-xr-x   3 mikey  staff      102 15 Mar 18:59 sqlite4java
drwxr-xr-x  13 mikey  staff      442 19 Mar 17:49 sqlite4java-282 2
-rw-r--r--@  1 mikey  staff   102236  1 Mar  2012 sqlite4java-docs.zip
-rw-r--r--@  1 mikey  staff   100502  1 Mar  2012 sqlite4java-src.zip
-rw-r--r--@  1 mikey  staff   622080  1 Mar  2012 sqlite4java-win32-x64.dll
-rw-r--r--@  1 mikey  staff   462848  1 Mar  2012 sqlite4java-win32-x86.dll
-rw-r--r--@  1 mikey  staff   129381  1 Mar  2012 sqlite4java.jar
以及我的数据库连接代码的副本:

import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteException;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Wrapper for Sqlite
 *
 * @author mikey
 */
public class Database {

    private SQLiteConnection db;

    public Database() {
        db = new SQLiteConnection(new File("./test.db"));
        try {
            db.open(true);
        } catch (SQLiteException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
sqlite4java 282
130322:161109.097 FINE [sqlite] Internal: loading library
130322:161109.099 FINE [sqlite] Internal: java.library.path=/Users/mikey/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
130322:161109.100 FINE [sqlite] Internal: sqlite4java.library.path=null
130322:161109.100 FINE [sqlite] Internal: cwd=/Users/mikey/NetBeansProjects/Test/.
130322:161109.101 FINE [sqlite] Internal: default path=/Users/mikey/NetBeansProjects/Test/lib
130322:161109.101 FINE [sqlite] Internal: forced path=null 
130322:161109.102 FINE [sqlite] Internal: os.name=mac os x; os=osx
130322:161109.102 FINE [sqlite] Internal: os.arch=x86_64
130322:161109.105 FINE [sqlite] Internal: trying to load sqlite4java-osx-x86_64
130322:161109.108 FINE [sqlite] Internal: cannot load sqlite4java-osx-x86_64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path
130322:161109.108 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64
130322:161109.112 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path
130322:161109.112 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4
130322:161109.115 FINE [sqlite] Internal: cannot load sqlite4java-osx-10.4: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-10.4 in java.library.path
130322:161109.115 FINE [sqlite] Internal: trying to load sqlite4java-osx
130322:161109.118 FINE [sqlite] Internal: cannot load sqlite4java-osx: java.lang.UnsatisfiedLinkError: no sqlite4java-osx in java.library.path
130322:161109.119 FINE [sqlite] Internal: trying to load sqlite4java
130322:161109.122 FINE [sqlite] Internal: cannot load sqlite4java: java.lang.UnsatisfiedLinkError: no sqlite4java in java.library.path
130322:161109.123 FINE [sqlite] Internal: trying to load sqlite4java-osx-x86_64-d
130322:161109.127 FINE [sqlite] Internal: cannot load sqlite4java-osx-x86_64-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64-d in java.library.path
130322:161109.127 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64-d
130322:161109.131 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64-d in java.library.path
130322:161109.131 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4-d
130322:161109.134 FINE [sqlite] Internal: cannot load sqlite4java-osx-10.4-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-10.4-d in java.library.path
130322:161109.134 FINE [sqlite] Internal: trying to load sqlite4java-osx-d
130322:161109.137 FINE [sqlite] Internal: cannot load sqlite4java-osx-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-d in java.library.path
130322:161109.138 FINE [sqlite] Internal: trying to load sqlite4java-d
130322:161109.141 FINE [sqlite] Internal: cannot load sqlite4java-d: java.lang.UnsatisfiedLinkError: no sqlite4java-d in java.library.path
Error: cannot load SQLite
java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.almworks.sqlite4java.Internal.tryLoadFromSystemPath(Internal.java:349)
    at com.almworks.sqlite4java.Internal.loadLibraryX(Internal.java:124)
    at com.almworks.sqlite4java.SQLite.main(SQLite.java:368)
    at frakdeck.Database.<init>(Database.java:19)
    at frakdeck.Test.start(Test.java:22)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
谢谢你能告诉我我的问题

编辑

为了响应@sereda,这里是将“com.almworks.sqlite4java.SQLite.main(新字符串[]{“-d”};”放入数据库连接代码的输出:

import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteException;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Wrapper for Sqlite
 *
 * @author mikey
 */
public class Database {

    private SQLiteConnection db;

    public Database() {
        db = new SQLiteConnection(new File("./test.db"));
        try {
            db.open(true);
        } catch (SQLiteException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
sqlite4java 282
130322:161109.097 FINE [sqlite] Internal: loading library
130322:161109.099 FINE [sqlite] Internal: java.library.path=/Users/mikey/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
130322:161109.100 FINE [sqlite] Internal: sqlite4java.library.path=null
130322:161109.100 FINE [sqlite] Internal: cwd=/Users/mikey/NetBeansProjects/Test/.
130322:161109.101 FINE [sqlite] Internal: default path=/Users/mikey/NetBeansProjects/Test/lib
130322:161109.101 FINE [sqlite] Internal: forced path=null 
130322:161109.102 FINE [sqlite] Internal: os.name=mac os x; os=osx
130322:161109.102 FINE [sqlite] Internal: os.arch=x86_64
130322:161109.105 FINE [sqlite] Internal: trying to load sqlite4java-osx-x86_64
130322:161109.108 FINE [sqlite] Internal: cannot load sqlite4java-osx-x86_64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path
130322:161109.108 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64
130322:161109.112 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path
130322:161109.112 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4
130322:161109.115 FINE [sqlite] Internal: cannot load sqlite4java-osx-10.4: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-10.4 in java.library.path
130322:161109.115 FINE [sqlite] Internal: trying to load sqlite4java-osx
130322:161109.118 FINE [sqlite] Internal: cannot load sqlite4java-osx: java.lang.UnsatisfiedLinkError: no sqlite4java-osx in java.library.path
130322:161109.119 FINE [sqlite] Internal: trying to load sqlite4java
130322:161109.122 FINE [sqlite] Internal: cannot load sqlite4java: java.lang.UnsatisfiedLinkError: no sqlite4java in java.library.path
130322:161109.123 FINE [sqlite] Internal: trying to load sqlite4java-osx-x86_64-d
130322:161109.127 FINE [sqlite] Internal: cannot load sqlite4java-osx-x86_64-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64-d in java.library.path
130322:161109.127 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64-d
130322:161109.131 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64-d in java.library.path
130322:161109.131 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4-d
130322:161109.134 FINE [sqlite] Internal: cannot load sqlite4java-osx-10.4-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-10.4-d in java.library.path
130322:161109.134 FINE [sqlite] Internal: trying to load sqlite4java-osx-d
130322:161109.137 FINE [sqlite] Internal: cannot load sqlite4java-osx-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-d in java.library.path
130322:161109.138 FINE [sqlite] Internal: trying to load sqlite4java-d
130322:161109.141 FINE [sqlite] Internal: cannot load sqlite4java-d: java.lang.UnsatisfiedLinkError: no sqlite4java-d in java.library.path
Error: cannot load SQLite
java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.almworks.sqlite4java.Internal.tryLoadFromSystemPath(Internal.java:349)
    at com.almworks.sqlite4java.Internal.loadLibraryX(Internal.java:124)
    at com.almworks.sqlite4java.SQLite.main(SQLite.java:368)
    at frakdeck.Database.<init>(Database.java:19)
    at frakdeck.Test.start(Test.java:22)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
sqlite4java 282
130322:161109.097精细[sqlite]内部:加载库
130322:161109.099精细[sqlite]内部:java.library.path=/Users/mikey/library/java/Extensions:/library/java/Extensions:/Network/library/java/Extensions:/System/library/java/Extensions:/usr/lib/java:。
130322:161109.100精细[sqlite]内部:sqlite4java.library.path=null
130322:161109.100精细[sqlite]内部:cwd=/Users/mikey/NetBeansProjects/Test/。
130322:161109.101精细[sqlite]内部:默认路径=/Users/mikey/NetBeansProjects/Test/lib
130322:161109.101精细[sqlite]内部:强制路径=null
130322:161109.102精细[sqlite]内部:os.name=MacOSX;os=osx
130322:161109.102精细[sqlite]内部:os.arch=x86_64
130322:161109.105精细[sqlite]内部:尝试加载sqlite4java-osx-x86_64
130322:161109.108精细[sqlite]内部:无法加载sqlite4java-osx-x86_64:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-osx-x86_64
130322:161109.108精细[sqlite]内部:尝试加载sqlite4java-osx-amd64
130322:161109.112精细[sqlite]内部:无法加载sqlite4java-osx-amd64:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-osx-amd64
130322:161109.112精细[sqlite]内部:尝试加载sqlite4java-osx-10.4
130322:161109.115精细[sqlite]内部:无法加载sqlite4java-osx-10.4:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-osx-10.4
130322:161109.115精细[sqlite]内部:尝试加载sqlite4java osx
130322:161109.118精细[sqlite]内部:无法加载sqlite4java osx:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java osx
130322:161109.119精细[sqlite]内部:尝试加载sqlite4java
130322:161109.122精细[sqlite]内部:无法加载sqlite4java:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java
130322:161109.123精细[sqlite]内部:尝试加载sqlite4java-osx-x86_64-d
130322:161109.127精细[sqlite]内部:无法加载sqlite4java-osx-x86_64-d:java.lang.unsatifiedLinkError:java.library.path中没有sqlite4java-osx-x86_64-d
130322:161109.127精细[sqlite]内部:尝试加载sqlite4java-osx-amd64-d
130322:161109.131精细[sqlite]内部:无法加载sqlite4java-osx-amd64-d:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-osx-amd64-d
130322:161109.131精细[sqlite]内部:尝试加载sqlite4java-osx-10.4-d
130322:161109.134精细[sqlite]内部:无法加载sqlite4java-osx-10.4-d:java.lang.unsatifiedLinkError:java.library.path中没有sqlite4java-osx-10.4-d
130322:161109.134精细[sqlite]内部:尝试加载sqlite4java-osx-d
130322:161109.137精细[sqlite]内部:无法加载sqlite4java-osx-d:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-osx-d
130322:161109.138精细[sqlite]内部:尝试加载sqlite4java-d
130322:161109.141精细[sqlite]内部:无法加载sqlite4java-d:java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-d
错误:无法加载SQLite
java.lang.UnsatifiedLink错误:java.library.path中没有sqlite4java-osx-x86_64
位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
位于java.lang.Runtime.loadLibrary0(Runtime.java:845)
位于java.lang.System.loadLibrary(System.java:1084)
位于com.almworks.sqlite4java.Internal.tryLoadFromSystemPath(Internal.java:349)
位于com.almworks.sqlite4java.Internal.loadLibraryX(Internal.java:124)
位于com.almworks.sqlite4java.SQLite.main(SQLite.java:368)
在frakdeck.Database.(Database.java:19)
在frakdeck.Test.start(Test.java:22)
位于com.sun.javafx.application.launchempl$5.run(launchempl.java:319)
位于com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215)
位于com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
位于com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
位于java.security.AccessController.doPrivileged(本机方法)
位于com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:76)

不确定到底是什么问题,但您可以尝试在程序中运行sqlite4java的诊断代码,看看它是否显示相同的加载顺序:

public Database() {
    com.almworks.sqlite4java.SQLite.main(new String[] {"-d"});
    db = new SQLiteConnection(new File("./test.db"));
    ...

升级到Mountain Lion后,我的程序也出现了同样的错误。当我将库添加到 /库/Java/扩展
他的程序运行良好。我不知道这是否是最好的解决方案,但它起了作用。

我也遇到了同样的问题,但通过从IDE创建libs文件夹,然后将jar复制到新的libs文件夹,成功地让它加载sqlite。然后,我从构建路径中删除了jar的旧版本,并添加了新版本。希望这有帮助

这是以下问题的解决方案:

Exception in thread "main" com.almworks.sqlite4java.SQLiteException:
[-91]cannot load library: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64
in java.library.path
请试试r