亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1759 | 回復(fù): 0
打印 上一主題 下一主題

[故障求助] 求助:AIX5.3 下,C如何創(chuàng)建Java 虛擬機(jī)。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-04-05 21:41 |只看該作者 |倒序?yàn)g覽
AIX5.3 下,C如何創(chuàng)建Java 虛擬機(jī)。

下面的c代碼編譯通過,但是運(yùn)行時(shí),創(chuàng)建Java虛擬機(jī)失敗。


#include <jni.h>
#include <stdlib.h>
#include <string.h>
#include "SignedData.h"

static JavaVM* s_jvm=0;
static JNIEnv* s_env=0;
/*
返回0 成功
*/
int InitJavaVM()
{
        int res;
        JavaVMInitArgs vm_args= {0};
        JavaVMOption options[2]= {0};

        if(s_jvm && s_env)return 0;         

        options[0].optionString = "-Djava.compiler=NONE";
        options[1].optionString = "-Djava.class.path=secuInter.jar";
         
        vm_args.version =JNI_VERSION_1_4;
        vm_args.nOptions = 2;
        vm_args.options = options;
        vm_args.ignoreUnrecognized = JNI_TRUE;
         res = JNI_CreateJavaVM(&s_jvm,(void**)&s_env,&vm_args);
        if (res < 0) {
        printf("Can't create Java VM\n";
        return -1;
        }

        return 0;
}
void ReleaseJavaVM()
{
        if(s_jvm)
                (*s_jvm)->DestroyJavaVM(s_jvm);
        s_jvm=0;
        s_env=0;
}


typedef char* pchar;
char** Verify(const char *signeddata)
{
        jclass sdata_class= 0;
        jmethodID mid= 0;
        jstring jstr= 0;
        jobjectArray jj= 0;
        int len= 0;
        pchar* result= 0;
        int i= 0;

        if(!s_env)return 0;
         sdata_class=(*s_env)->FindClass(s_env,"net/netca/secuInter/SignTools";
        if(sdata_class==0){
                printf("class not found!\n";
                return 0;
        }
         
        mid= (*s_env)->GetStaticMethodID(s_env,sdata_class,"verify","(Ljava/lang/String[Ljava/lang/String;";
        if(mid==0){
                printf("method not found!\n";
                return 0;
        }
         
        jstr = (*s_env)->NewStringUTF(s_env,signeddata);
        jj = (jobjectArray)(*s_env)->CallStaticObjectMethod(s_env,sdata_class,mid,jstr);
         len= (*s_env)->GetArrayLength(s_env,jj);
        result=(pchar*)malloc(sizeof(pchar)*len);
        for(i=0;i<len;i++)
        {
                jstring js= 0;
                const char* tmp = 0;

                js=(jstring)(*s_env)->GetObjectArrayElement(s_env,jj,i);
                tmp = (*s_env)->GetStringUTFChars(s_env,js,0);
                result[i] = (pchar)malloc(strlen(tmp)+1);
                strcpy(result[i],tmp);
                (*s_env)->ReleaseStringUTFChars(s_env,js,tmp);
        }
        return result;
}

char** Decrypt(const char *decdata)
{
        jclass sdata_class= 0;
        jmethodID mid= 0;
        jstring jstr= 0;
        jobjectArray jj= 0;
        int len= 0;
        pchar* result= 0;
        int i= 0;

        if(!(*s_env))return 0;
         sdata_class=(*s_env)->FindClass(s_env,"net/netca/secuInter/SignTools";
        if(sdata_class==0){
                printf("class not found!\n";
                return 0;
        }
         mid= (*s_env)->GetStaticMethodID(s_env,sdata_class,"decrypt","(Ljava/lang/String[Ljava/lang/String;";
        if(mid==0){
                printf("method not found!\n");
                return 0;
        }
         jstr= (*s_env)->NewStringUTF(s_env,decdata);
        jj= (jobjectArray)(*s_env)->CallStaticObjectMethod(s_env,sdata_class,mid,jstr);
         len = (*s_env)->GetArrayLength(s_env,jj);
        result=(pchar*)malloc(sizeof(pchar)*len);
        for(i=0;i<len;i++)
        {
                jstring js= 0;
                const char* tmp =0;

                js=(jstring)(*s_env)->GetObjectArrayElement(s_env,jj,i);
                tmp = (*s_env)->GetStringUTFChars(s_env,js,0);
                result[i] = (pchar)malloc(strlen(tmp)+1);
                strcpy(result[i],tmp);
                (*s_env)->ReleaseStringUTFChars(s_env,js,tmp);
        }
        return result;
}

static char* p_plain="test";

static char* p="other";
                                 


int main()
{
        char** p_r1= NULL;
    char** p_r2= NULL;


        if(InitJavaVM())return -1;

         
        p_r1= Decrypt(p);
        printf("返回信息:%s\n",p_r1[0]);
        printf("返回?cái)?shù)據(jù):%s\n",p_r1[1]);
    if(strcmp(p_r1[0],"0")!=0) return 0;

         
        p_r2=Verify(p_r1[1]);   
       
        printf("返回信息:%s\n",p_r2[0]);
        printf("返回?cái)?shù)據(jù):%s\n",p_r2[1]);

        free(p_r1[0]);
        free(p_r1[1]);
        free(p_r1);

        free(p_r2[0]);
        free(p_r2[1]);
        free(p_r2);

        ReleaseJavaVM();
        return 0;
}
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP