每次我尝试在Ubuntu 12.04中打开Eclipse时,我都会收到一个不满意的链接错误,它将无法打开.我最近安装了java JDK和Android SDK,这可能是问题吗?我按照本教程.
这是日志信息:
!SESSION 2012-04-15 21:05:46.902 -----------------------------------------------
eclipse.buildId=I20110613-1736
java.version=1.7.0
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_GB
Command-line arguments: -os linux -ws gtk -arch x86_64
!ENTRY org.eclipse.osgi 4 0 2012-04-15 21:05:47.885
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-3740 in java.library.path
no swt-gtk in java.library.path
Can't load library: /home/tom/.swt/lib/linux/x86_64/libswt-gtk-3740.so
Can't load library: /home/tom/.swt/lib/linux/x86_64/libswt-gtk.so
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:285)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:695)
at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
at …Run Code Online (Sandbox Code Playgroud) 我们正在体验java.lang.UnsatisfiedLinkError一些在市场上使用我们的应用程序的Android手机.
问题描述:
static
{
System.loadLibrary("stlport_shared"); // C++ STL
System.loadLibrary("lib2");
System.loadLibrary("lib3");
}
Run Code Online (Sandbox Code Playgroud)
System.loadLibrary()使用a 使应用程序崩溃java.lang.UnsatisfiedLinkError.
java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/app_id-2.apk,libraryPath=/data/app-lib/app_id-2]: findLibrary returned null
解决方法
我们开始在所有安装上运行一些自定义诊断程序,以检查/data/data/app_id/lib文件夹中是否已解压缩每个lib .
PackageManager m = context.getPackageManager();
String s = context.getPackageName();
PackageInfo p;
p = m.getPackageInfo(s, 0);
s = p.applicationInfo.dataDir;
File appDir = new File(s);
long freeSpace = appDir.getFreeSpace();
File[] appDirList = appDir.listFiles();
int numberOfLibFiles = 0;
boolean subFilesLarger0 = true;
for (int i = 0; i < appDirList.length; i++) …Run Code Online (Sandbox Code Playgroud) java-native-interface android native android-ndk unsatisfiedlinkerror
我尝试运行tomcat时收到此错误:
"java.lang.UnsatisfiedLinkError中:C:\ Program Files文件(x86)的\ Apache的Tomcat的7.0.34\BIN\tcnative-1.dll文件:一个IA 32位平台上无法加载AMD 64位的.dll" .
但是,我已经下载了64位JRE,并仔细检查了我的java版本:
C:\ Program Files(x86)\ apache-tomcat-7.0.34\bin> java -version
java版"1.7.0_10"
Java(TM)SE运行时环境(版本1.7.0_10-b18)
Java HotSpot(TM)64位服务器VM(内置23.6-b04,混合模式)
我以前在这里看过这个问题,但是其中一个没有解决方案,另一个是Eclipse问题,但是当我直接访问tomcat时,我收到了这个错误.
如何找出正在检测哪个"IA 32位平台",以及如何将Tomcat指向正确的方向?这也就是为什么我的servlet通过Eclipse得到这个404错误的原因?
类型状态报告
message/JSPandServlet/Controller
description请求的资源不可用.
C:\ Program Files(x86)\ apache-tomcat-7.0.34\bin> configtest.bat
使用CATALINA_BASE:"C:\ Program Files(x86)\ apache-tomcat-7.0.34"
使用CATALINA_HOME:"C:\ Program Files(x86)\ apache-tomcat-7.0.34"
使用CATALINA_TMPDIR:"C:\ Program Files(x86)\ apache-tomcat-7.0.34\temp"
使用JRE_HOME:"C:\ Program Files(x86)\ Java\jre7"
使用CLASSPATH:"C:\ Program Files文件(x86)的\ Apache的Tomcat的7.0.34\BIN\bootstra p.jar; C:\ Program Files文件(x86)的\ Apache的Tomcat的7.0.34\BIN\Tomcat的巨力.罐"
java.lang.UnsatisfiedLinkError中:C:\程序文件(x86)\ Apache的Tomcat的7.0.34\BIN\tcnative-1.DLL:一个IA 32位平台上无法加载AMD的64位的.dll
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.apache.tomcat.jni.Library.<init>(Library.java:42)
at …Run Code Online (Sandbox Code Playgroud) 我和一个朋友一起创建了一个Android应用来组织学校成绩。该应用程序可以在我的设备和大多数用户设备上正常运行,但是崩溃率超过3%,这主要是由于java.lang.UnsatisfiedLinkErrorAndroid 7.0、8.1和9版本所发生的。
我已经在手机和包括所有架构在内的多个仿真器上测试了该应用程序。我将应用程序作为android-app-bundle上传到应用程序商店,并怀疑这可能是问题的根源。
我在这里有点迷茫,因为我已经尝试了好几件事,但是到目前为止,我既不能减少出现的次数,也无法在任何设备上重现它。任何帮助将不胜感激。
我发现此资源指出Android有时无法解压缩外部库。因此,他们创建了一个ReLinker库,该库将尝试从压缩的应用程序中获取库:
不幸的是,这并没有减少由于导致的崩溃数量java.lang.UnsatisfiedLinkError。我继续在线研究并找到了这篇文章,这表明问题出在64位库中。因此,我删除了64位库(该应用程序仍可在所有设备上运行,因为64位架构也可以执行32位库)。但是,错误仍然会以与以前相同的频率发生。
通过google-play-console,我得到了以下崩溃报告:
java.lang.UnsatisfiedLinkError:
at ch.fidelisfactory.pluspoints.Core.Wrapper.callCoreEndpointJNI (Wrapper.java)
at ch.fidelisfactory.pluspoints.Core.Wrapper.a (Wrapper.java:9)
at ch.fidelisfactory.pluspoints.Model.Exam.a (Exam.java:46)
at ch.fidelisfactory.pluspoints.SubjectActivity.i (SubjectActivity.java:9)
at ch.fidelisfactory.pluspoints.SubjectActivity.onCreate (SubjectActivity.java:213)
at android.app.Activity.performCreate (Activity.java:7136)
at android.app.Activity.performCreate (Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3063)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1823)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:198)
at android.app.ActivityThread.main (ActivityThread.java:6729)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:876)
Run Code Online (Sandbox Code Playgroud)
该Wrapper.java …
java java-native-interface android unsatisfiedlinkerror android-app-bundle
我需要从我的USB网络摄像头捕获视频流,为此我使用Opencv 2.4.6进行Java开发.我按照这里列出的步骤操作
我将"C:\ opencv\build\java\x64"目录添加到我的系统路径中,并将"opencv-246.jar"文件包含在我的ECLIPSE库中.当你运行解释时
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class Main {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat m = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println("m = " + m.dump());
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了
m = [1, 0, 0;
0, 1, 0;
0, 0, 1]
Run Code Online (Sandbox Code Playgroud)
好的=)
但是当我跑
import org.opencv.highgui.VideoCapture;
public class Main {
public static void main(String[] args) {
VideoCapture vc = new VideoCapture(0);
if(vc.isOpened()){
System.out.println("Works!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.highgui.VideoCapture.n_VideoCapture(I)J
at …Run Code Online (Sandbox Code Playgroud) 几天前,我询问了一个UnsatisfiedLinkError来自非原生OpenCV代码的问题.我认为在重新安装Eclipse并关闭/重新打开所有软件包之后问题就解决了,但是在我将OpenCV代码放入现有onCreate()方法之后它又回来了.
我创建了一个名为Start的活动的新Android应用程序.然后我去了项目属性并将OpenCV添加为库.这是activity(Start.java)的代码:
package com.test;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.Menu;
public class Start extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
Mat Image = Highgui.imread("/image.jpg");
if (Image == null) {
AlertDialog ad = new AlertDialog.Builder(this).create();
ad.setMessage("Fatal error: can't open /image.jpg!");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_start, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是日志:
08-13 12:26:14.791: E/Trace(1067): error opening trace file: No …Run Code Online (Sandbox Code Playgroud) 离开C++几年了,我从下面的代码中得到一个链接器错误:
Gene.h
#ifndef GENE_H_INCLUDED
#define GENE_H_INCLUDED
template <typename T>
class Gene {
public:
T getValue();
void setValue(T value);
void setRange(T min, T max);
private:
T value;
T minValue;
T maxValue;
};
#endif // GENE_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)
Gene.cpp
#include "Gene.h"
template <typename T>
T Gene<T>::getValue() {
return this->value;
}
template <typename T>
void Gene<T>::setValue(T value) {
if(value >= this->minValue && value <= this->minValue) {
this->value = value;
}
}
template <typename T>
void Gene<T>::setRange(T min, T max) {
this->minValue = min;
this->maxValue = …Run Code Online (Sandbox Code Playgroud) 有一段代码在android 4.1.2上工作正常但在4.0.3上没有,崩溃日志是4.0.3
我收到UnsatisfiedLinkError Exception
请指导我谢谢
02-22 12:57:09.319: D/dalvikvm(1312): Trying to load lib /data/data/com.kosh.android/lib/libsqliteX.so 0x41056f48
02-22 12:57:09.319: D/dalvikvm(1312): Added shared lib /data/data/com.kosh.android/lib/libsqliteX.so 0x41056f48
02-22 12:58:02.060: W/dalvikvm(1312): No implementation found for native Lcom/shabdkosh/android/sqlite/CursorWindow;.native_init (Z)V
02-22 12:58:07.624: D/AndroidRuntime(1312): Shutting down VM
02-22 12:58:07.624: W/dalvikvm(1312): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
02-22 12:58:07.767: E/AndroidRuntime(1312): FATAL EXCEPTION: main
02-22 12:58:07.767: E/AndroidRuntime(1312): java.lang.UnsatisfiedLinkError: native_init
02-22 12:58:07.767: E/AndroidRuntime(1312): at com.kosh.android.sqlite.CursorWindow.native_init(Native Method)
02-22 12:58:07.767: E/AndroidRuntime(1312): at com.kosh.android.sqlite.CursorWindow.<init>(CursorWindow.java:35)
02-22 12:58:07.767: E/AndroidRuntime(1312): at org.sqlite.database.sqlite.SQLiteCursor.awc_clearOrCreateWindow(SQLiteCursor.java:139)
02-22 12:58:07.767: E/AndroidRuntime(1312): at org.sqlite.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:150) …Run Code Online (Sandbox Code Playgroud) java sqlite java-native-interface android unsatisfiedlinkerror
只是想尝试一个简单的openCV android程序.按照此处的说明下载并安装OpenCV for Android ,并将OpenCV Library 2.4.2添加为我自己的android项目的库项目,如指令状态.
但是,当我编译标准的"Hello World Program"时,如下所示,如果我包含该Mat mat = new Mat();行,则会失败,否则会成功.
package com.example;
import org.opencv.core.Mat;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Mat mat = new Mat();
}
}
Run Code Online (Sandbox Code Playgroud)
这是打印出来的堆栈跟踪:
07-23 09:59:43.835: E/AndroidRuntime(8222): FATAL EXCEPTION: main
07-23 09:59:43.835: E/AndroidRuntime(8222): java.lang.UnsatisfiedLinkError: n_Mat
07-23 09:59:43.835: E/AndroidRuntime(8222): at org.opencv.core.Mat.n_Mat(Native Method)
07-23 09:59:43.835: E/AndroidRuntime(8222): at …Run Code Online (Sandbox Code Playgroud) 我有一个android项目,我使用本机代码来处理SIP(使用libosip2和libeXosip2).我的本机代码与库的源一起编译到一个模块中.
代码编译得很好,生成的库具有我期望它拥有的所有符号,但是当我尝试加载生成的库时,我收到以下错误:
E/eXosip.loadLibrary(9210): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1307]: 1941 cannot locate 'srand'...
Run Code Online (Sandbox Code Playgroud)
我的Application.mk看起来像这样:
APP_STL := gnustl_shared
APP_ABI := armeabi-v7a
APP_CPPFLAGS += -fexceptions
Run Code Online (Sandbox Code Playgroud)
我确实使用ndk-depends检查了未捕获的依赖项,这给了我
libeXosip_jni.so
libstdc++.so
liblog.so
libgnustl_shared.so
libm.so
libdl.so
libc.so
Run Code Online (Sandbox Code Playgroud)
添加loadLibrary("gnustl_shared")没有帮助(这是在"libs/armeabi-v7 /"中也找到的唯一一个提到的库).
我的Android.mk:
LOCAL_PATH := $(call my-dir)
$(shell (cd $(LOCAL_PATH); sh extract_stuff.sh; cd $(OLDPWD)))
include $(CLEAR_VARS)
OSIP := libosip2-4.1.0
EXOSIP := libeXosip2-4.1.0
LOCAL_MODULE := eXosip
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(OSIP)/include \
$(LOCAL_PATH)/$(EXOSIP)/include
LOCAL_SRC_FILES := $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(OSIP)/src/osipparser2/*.c)) \
$(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(OSIP)/src/osip2/*.c)) \
$(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(EXOSIP)/src/*.c))
LOCAL_CFLAGS …Run Code Online (Sandbox Code Playgroud)