Я видел этот вопрос здесь, пробовал предложенные исправления, но до сих пор успеха для меня не было. У меня есть довольно большой опыт Java, но JNI давно, никогда не делал это на Linux, хотя...
Я пытаюсь получить простое приложение HelloWorld JNI под управлением Linux.
Малый файл Java:
class HelloWorld {
private native void print();
public static void main(String[] args){
new HelloWorld().print();
}
static {
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("HelloWorld");
}
}
Малый файл C:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
скомпилировал файл C по:
gcc -shared -Wall -fPIC HelloWorld.c -I/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/ -o libHelloWorld.so
Запустите приложение по:
java HelloWorld
или
java -Djava.library.path=/home/nxp40954/jnitesting/. HelloWorld
Но ничего хорошего, получив:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/nxp40954/jnitesting/libHelloWorld.so: /home/nxp40954/jnitesting/libHelloWorld.so: cannot open shared object file: No such file or directory
Странно, потому что на самом деле существует файл /home/nxp40954/jnitesting/libHelloWorld.so
.
Есть ли у кого-нибудь подсказка?
-121--1182274-Я написал свой собственный ImageViewer и теперь я хочу иметь Установить как функциональность, как в Android native ImageViewer. Я теперь это возможно, так как у Facebook это есть. Я приложил снимок экрана, чтобы прояснить себя.
P.S. Я хочу дать более подробное объяснение того, что идет не так. После выбора в меню «Contact icon» появится список моих контактов. При выборе контакта прикладная сила закрывается. Если выбрать «Домой/Заблокировать обои экрана», откроется галерея моего телефона. Вот мой фрагмент кода:
Bitmap icon = mBitmap;
Intent setAs = new Intent(Intent.ACTION_ATTACH_DATA);
setAs.setType("image/jpg");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File f = new File(Environment.getExternalStorageDirectory() + File.separator + "/my_tmp_file.jpg");
try {
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
setAs.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/my_tmp_file.jpg"));
startActivity(Intent.createChooser(setAs, "Set Image As"));
Я также добавил соответствующие разрешения в мой манифест и я могу записать свое изображение на SD-карту телефона.