首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MinGW64的JAWT应用程序不运行

使用MinGW64的JAWT应用程序不运行
EN

Stack Overflow用户
提问于 2012-08-30 17:52:51
回答 1查看 325关注 0票数 1

试图运行JAWT/JNI应用程序。

我在Windows7Windows上使用jdk1.6.0_31和MinGW64。编译过程顺利,但仍然无法运行应用程序。在我添加JAWT_GetAWT()函数之前没有问题。

问题是我是C/C++编程语言新手。

Native.java

代码语言:javascript
复制
import java.awt.Component;
import javax.swing.JFrame;

public class Native{

    static {
        System.loadLibrary("native");
    }

    public static native boolean getBoolean(Component component);

    public static void main(String args[]){
        JFrame frame = new JFrame("test viewport");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.pack();

        getBoolean(frame);
    }
}

生成的Native.h

代码语言:javascript
复制
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Native */

#ifndef _Included_Native
#define _Included_Native
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Native
 * Method:    getBoolean
 * Signature: (Ljava/awt/Component;)Z
 */
JNIEXPORT jboolean JNICALL Java_Native_getBoolean
  (JNIEnv *, jclass, jobject);

#ifdef __cplusplus
}
#endif
#endif

Native.c

代码语言:javascript
复制
#include <jni.h>
#include <jawt_md.h>
#include <jawt.h>
#include "Native.h"

JNIEXPORT jboolean JNICALL Java_Native_getBoolean(JNIEnv *env, jclass class, jobject component){
    JAWT awt;
    awt.version = JAWT_VERSION_1_4;

    return JAWT_GetAWT(env, &awt);//can't run after I add this function
}

GCC从这里编译命令行

代码语言:javascript
复制
gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -Id:/devtools/java/jdk1.6.0_31/include -Id:/devtools/java/jdk1.6.0_31/include/win32 -LD:/devtools/java/jdk1.6.0_31/jre/bin -ljawt -shared Native.c -o native.dll  

应用程序给java.lang.UnsatisfiedLinkError:

代码语言:javascript
复制
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\t.key\Desktop\Native\native.dll: Can't find dependent libraries
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        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 Native.<clinit>(Native.java:7)
Could not find the main class: Native.  Program will exit.

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2012-09-30 21:31:35

您可以尝试一下这里提出的解决方案:https://github.com/mikiobraun/jblas/issues/9

(他们也在使用MinGW64,这就是为什么我认为这也能解决你的问题。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12202695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档