java

阅读 / 问答 / 标签

java调用怎么只能加载一次dll库

JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。简单介绍及应用如下:一、JAVA中所需要做的工作在JAVA程序中,首先需要在类中声明所调用的库名称,如下:static{System.loadLibrary(“goodluck”);}在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下:publicnativestaticvoidset(inti);publicnativestaticintget();然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。例如程序testdll.java,内容为:publicclasstestdll{static{System.loadLibrary("goodluck");}publicnativestaticintget();publicnativestaticvoidset(inti);publicstaticvoidmain(String[]args){testdlltest=newtestdll();test.set(10);System.out.println(test.get());}}用javactestdll.java编译它,会生成testdll.class。再用javahtestdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。二、C/C++中所需要做的工作对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。我们先看一下testdll.h文件的内容:#include#ifndef_Included_testdll#define_Included_testdll#ifdef__cplusplusextern"C"{#endifJNIEXPORTjintJNICALLJava_testdll_get(JNIEnv*,jclass);JNIEXPORTvoidJNICALLJava_testdll_set(JNIEnv*,jclass,jint);#ifdef__cplusplus}#endif#endif在具体实现的时候,我们只关心两个函数原型JNIEXPORTjintJNICALLJava_testdll_get(JNIEnv*,jclass);和JNIEXPORTvoidJNICALLJava_testdll_set(JNIEnv*,jclass,jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。好,下面我们用testdll.cpp文件具体实现这两个函数:#include"testdll.h"inti=0;JNIEXPORTjintJNICALLJava_testdll_get(JNIEnv*,jclass){returni;}JNIEXPORTvoidJNICALLJava_testdll_set(JNIEnv*,jclass,jintj){i=j;}编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll。把goodluck.dll拷贝到testdll.class的目录下,javatestdll运行它,就可以观察到结果了。

java怎么引用c

Java调用C++/C有3中方式:JNI、JNA、JNative。注:1、JNA的方式很普遍。2、Java和C++/C交互的难点在于数据结构的对应3、java不可以直接调用C#代码,C#代码需要托管JNI(Android调用,普通java类似)使用步骤:1、编写静态方法(用java声明)2、编译生成class文件3、编译生成h文件4、编写C文件(用C/C++实现)5、配置NDK6、配置so库7、在Activity调用(Java调用C/C++)。JNative使用步骤:1、下载Jnative.jar,下载地址如下:http://nchc.dl.sourceforge.net/sourceforge/jnative/JNative.jar把JNativeCpp.dll放在c:windowssystem32目录下;把要调用的dll文件也放在c:windowssystem32目录下。2、编码调用dll,示例如下:JNative jnative = new JNative(dllNmae,"disConnect");  //调用a.dll中disconnect方法jnative.setRetVal(Type.INT);  //设置返回类型为int,也可以设置为float,string等类型int pindex = 0;jnative.setParameter(pindex++, hHandle);  //设置第一个参数为hHandlejnative.invoke();  //正式执行这个函数return jnative.getRetValAsInt();  //设置返回值为int,并返回JNA使用步骤:1、下载 jna-x.x.x.jar放入到java项目类路径下;2、创建一个接口继承Library;3、声明方法,方法的返回值和参数要和本地dll对应;4、实例化接口实例;5、调用接口;//1、创建接口public interface CSIInterface extends Library {//2、声明方法public Boolean CreateCsiInstance(int deviceId, Boolean bSquelchLogging);}//3、实例化接口public CSIInterface instance = (CSIInterface) Native.loadLibrary("macitcsi.dll", CSIInterface.class);//4、调用接口instance.CreateCsiInstance(4,true);使用注意点:1、dll的位数要和JDK的位数一致;2、Java和C的数据类型对应关系如下,和C++的数据类型可以通过C为中转:3、常用记录:com.sun.jna.Structure对应结构体,com.sun.jna.Callback对应回调。作者:China第一程序员链接:https://www.jianshu.com/p/24174203c3d7来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

JNA 下面的C++代码怎么转JAVA?

Java是通过JNI调用其他语言(包括C++)编译的本地方法的,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。如下是详细讲解:1、JAVA中所需要做的工作在JAVA程序中,首先需要在类中声明所调用的库名称,如下:static {System.loadLibrary(“goodluck”);}在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下:public native static void set(int i);public native static int get();然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。例如程序TestDll.java,内容为:public class TestDll{static{System.loadLibrary("goodluck");}public native static int get();public native static void set(int i);public static void main(String[] args){TestDll test = new TestDll();test.set(10);System.out.println(test.get());}}用javac TestDll.java编译它,会生成TestDll.class。再用javah TestDll,则会在当前目录下生成TestDll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。2、C/C++中所需要做的工作对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。我们先看一下TestDll.h文件的内容:/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class TestDll */#ifndef _Included_TestDll#define _Included_TestDll#ifdef __cplusplusextern "C" {#endifJNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);#ifdef __cplusplus}#endif#endif在具体实现的时候,我们只关心两个函数原型JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);和JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。下面我们用TestDll.cpp文件具体实现这两个函数:#include "TestDll.h"int i = 0;JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass){return i;}JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint j){i = j;}编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll把goodluck.dll拷贝到TestDll.class的目录下,java TestDll运行它,就可以观察到结果了。

java怎样调用C++对象,该怎么解决

Java是通过JNI调用其他语言(包括C++)编译的本地方法的,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。如下是详细讲解:1、JAVA中所需要做的工作在JAVA程序中,首先需要在类中声明所调用的库名称,如下:static {System.loadLibrary(“goodluck”);}在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下:public native static void set(int i);public native static int get();然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。例如程序TestDll.java,内容为:public class TestDll{static{System.loadLibrary("goodluck");}public native static int get();public native static void set(int i);public static void main(String[] args){TestDll test = new TestDll();test.set(10);System.out.println(test.get());}}用javac TestDll.java编译它,会生成TestDll.class。再用javah TestDll,则会在当前目录下生成TestDll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。2、C/C++中所需要做的工作对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。我们先看一下TestDll.h文件的内容:/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class TestDll */#ifndef _Included_TestDll#define _Included_TestDll#ifdef __cplusplusextern "C" {#endifJNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);#ifdef __cplusplus}#endif#endif在具体实现的时候,我们只关心两个函数原型JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);和JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。下面我们用TestDll.cpp文件具体实现这两个函数:#include "TestDll.h"int i = 0;JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass){return i;}JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint j){i = j;}编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll把goodluck.dll拷贝到TestDll.class的目录下,java TestDll运行它,就可以观察到结果了。

java如何调用c++里面的方法

Java是通过JNI调用其他语言(包括C++)编译的本地方法的,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。如下是详细讲解:1、JAVA中所需要做的工作在JAVA程序中,首先需要在类中声明所调用的库名称,如下:static { System.loadLibrary(“goodluck”);}在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下:public native static void set(int i);public native static int get();然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。例如程序TestDll.java,内容为:public class TestDll{ static { System.loadLibrary("goodluck"); } public native static int get(); public native static void set(int i); public static void main(String[] args) { TestDll test = new TestDll(); test.set(10); System.out.println(test.get()); }}用javac TestDll.java编译它,会生成TestDll.class。再用javah TestDll,则会在当前目录下生成TestDll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。2、C/C++中所需要做的工作对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。我们先看一下TestDll.h文件的内容:/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class TestDll */#ifndef _Included_TestDll#define _Included_TestDll#ifdef __cplusplusextern "C" {#endifJNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);#ifdef __cplusplus}#endif#endif在具体实现的时候,我们只关心两个函数原型JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);和JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。下面我们用TestDll.cpp文件具体实现这两个函数:#include "TestDll.h"int i = 0;JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass){ return i;}JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint j){ i = j;}编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll把goodluck.dll拷贝到TestDll.class的目录下,java TestDll运行它,就可以观察到结果了。

如何用java调用c++动态库

Java是通过JNI调用其他语言(包括C++)编译的本地方法的,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。如下是详细讲解:1、JAVA中所需要做的工作在JAVA程序中,首先需要在类中声明所调用的库名称,如下:static { System.loadLibrary(“goodluck”);}在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下:public native static void set(int i);public native static int get();然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。例如程序TestDll.java,内容为:public class TestDll{ static { System.loadLibrary("goodluck"); } public native static int get(); public native static void set(int i); public static void main(String[] args) { TestDll test = new TestDll(); test.set(10); System.out.println(test.get()); }}用javac TestDll.java编译它,会生成TestDll.class。再用javah TestDll,则会在当前目录下生成TestDll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。2、C/C++中所需要做的工作对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。我们先看一下TestDll.h文件的内容:/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class TestDll */#ifndef _Included_TestDll#define _Included_TestDll#ifdef __cplusplusextern "C" {#endifJNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);#ifdef __cplusplus}#endif#endif在具体实现的时候,我们只关心两个函数原型JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);和JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。下面我们用TestDll.cpp文件具体实现这两个函数:#include "TestDll.h"int i = 0;JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass){ return i;}JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint j){ i = j;}编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll把goodluck.dll拷贝到TestDll.class的目录下,java TestDll运行它,就可以观察到结果了。

java如何去调用C++的方法?

http://zhidao.baidu.com/search?word=jni&pn=0&ie=gbk&rn=10&lm=0&fr=search

java 如何调用一个已经存在的静态库,并输入和获取参数! 例如:静态库中已经存在函数 ret=ys_tpcall(aa);

给出一个windows下dll的实例。linux下.a的静态库只是头文件和编译有所不同,另外需要将编译后的动态库文件放入/usr/lib下,使用ldconfig载入。一 先制作一个系统中有的DLL文件(cpp给出的sdk接口) 既然是测试我们就把我们这个dll叫做testDll吧,为了简单其间,我只写一个add方法,就是简单的2个数字相加,对于真正的开发中我们肯定会遇到其他类型,java到c/cpp中类型需要转换,具体类型转换对应关系g一下就能得到,我也不在列举。c/cpp中一个class一般包含2个文件,一个头文件定义(*.h),一个文件主体(*.c/*.cpp)。啰嗦了这么多还是直接动手吧,先在vs2008中建立一个工程(当然你也可以直接编写不用这些IDE工具,gcc g++的命令自己g。下同,不在注释不在废话),选取win32工程 键入工程名字testDll,点击next选取DLL,然后点击完成 打开我们的testdll.cpp,添加进我们的add方法 C++代码 1.int add(int a,int b){ 2. return a+b; 3.} int add(int a,int b){ return a+b; }注意到文件列表里并没有testDll.h,因为我们要给出调用者一个接口,如果不给头文件,人家就没办法调用,所以我们就必须添加一个头文件testDll.h。 C++代码 1.#ifdef TEST_DLL 2.#define TEST_API __declspec(dllexport) 3.#else 4.#define TEST_API __declspec(dllimport) 5.#endif 6. 7./* Set up for C function definitions, even when using C++ */ 8.#ifdef __cplusplus 9.extern "C" { 10.#endif 11. 12.TEST_API int add(int,int); 13. 14./* Ends C function definitions when using C++ */ 15.#ifdef __cplusplus 16.} 17.#endif #ifdef TEST_DLL#define TEST_API __declspec(dllexport)#else#define TEST_API __declspec(dllimport)#endif/* Set up for C function definitions, even when using C++ */#ifdef __cplusplusextern "C" {#endifTEST_API int add(int,int);/* Ends C function definitions when using C++ */#ifdef __cplusplus}#endif在这个头文件中我们把我们的add方法给定义了进去。注意到testdll.cpp中#include "stdafx.h",所以我们就把这个testDll.h include进stdafx.h里面。 按道理说我们的这个dll已经完成了,但是一般c/cpp给接口SDK的时候大都给.h和.lib,为了一步生成dll和lib,我们添加进一个testDll.def,有了这个文件就可以一步生成dll和lib。在source file里右键add new item ,选择Module-Definition File 键入testDll,OK了,我们可以直接build了。生成testDll.dll和testDll.lib。 把testDll.dll扔到system32目录里等待我们高大威猛的java jni调用。 二 JNI 2.1 编写java文件 为了显示我们的与众相同,我们就把我们的这个java文件命名为Demo.java顺便直接带上包名 ,因为我们知道人家给我们的接口里有个add方法,所以我们就直接来个调用吧。Java代码 1.package com.testJni.testDemo; 2. 3.public class Demo { 4. static 5. { 6. //System.out.println(System.getProperty("java.library.path")); 7. System.loadLibrary("testDll"); 8. System.loadLibrary("jniDll"); 9. } 10. public native static int add(int a,int b); 11. 12.} package com.testJni.testDemo;public class Demo { static { //System.out.println(System.getProperty("java.library.path")); System.loadLibrary("testDll"); System.loadLibrary("jniDll"); } public native static int add(int a,int b); }demo.java代码暂时如此,我们把将要生成的jni的dll叫做jniDll,有童鞋讲,我不想用你这个烂名字jniDll多俗啊,没关系,你可以换,随你换,生成文件后你再换也可以,现在换也可以。 2.2 生成.h头文件 javah命令,不多讲。生成的文件com_testJni_testDemo_Demo.h这个文件的命名规则我就不多讲了,一目了然。 C++代码 1./* DO NOT EDIT THIS FILE - it is machine generated */ 2.#include <jni.h> 3./* Header for class com_testJni_testDemo_Demo */ 4. 5.#ifndef _Included_com_testJni_testDemo_Demo 6.#define _Included_com_testJni_testDemo_Demo 7.#ifdef __cplusplus 8.extern "C" { 9.#endif 10./* 11. * Class: com_testJni_testDemo_Demo 12. * Method: add 13. * Signature: (II)I 14. */ 15.JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add 16. (JNIEnv *, jclass, jint, jint); 17. 18.#ifdef __cplusplus 19.} 20.#endif 21.#endif /* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_testJni_testDemo_Demo */#ifndef _Included_com_testJni_testDemo_Demo#define _Included_com_testJni_testDemo_Demo#ifdef __cplusplusextern "C" {#endif/* * Class: com_testJni_testDemo_Demo * Method: add * Signature: (II)I */JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add (JNIEnv *, jclass, jint, jint);#ifdef __cplusplus}#endif#endif2.3 用c/cpp实现这个头文件 c/cpp中已经实现了这个add方法,我们只需要调用就可以啦。所以直接vs2008中建立一个dll工程,工程名我们就叫jniDll,具体过程不再多讲,方法同上面testDll的建立一样。在这个工程里kimmking把需要引用的包、文件等已经讲的很清楚了。打开jniDll.cpp,添加下面代码 C++代码 1.JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add 2.(JNIEnv *env,jclass jobject,jint a,jint b){ 3. 4. return add(a,b); 5.} JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add(JNIEnv *env,jclass jobject,jint a,jint b){ return add(a,b);}因为int对应的类型就刚好是jint,所以就不需要转换,其他需要转换的类型自己g对应关系转换,注意释放。 这个工程里我们还需要打开 stdafx.h添加C++代码 1.#include <jni.h> 2. 3.#include "testDll.h" 4.#include "com_testJni_testDemo_Demo.h" #include <jni.h>#include "testDll.h"#include "com_testJni_testDemo_Demo.h"在编译这个jniDll工程的时候需要引入testDll.h,com_testJni_testDemo_Demo.h,另外添加testDll.lib这个依赖。 好了做好这些后,build下,生成了我们期待已久的jniDll.dll,把这个dll同样扔到system32下。 三 测试 本人特懒,不想写多余的class,所以直接修改Demo.java 这也是刚才为什么讲暂时如此的原因Java代码 1.package com.testJni.testDemo; 2. 3.public class Demo { 4. static 5. { 6. //System.out.println(System.getProperty("java.library.path")); 7. System.loadLibrary("testDll"); 8. System.loadLibrary("jniDll"); 9. } 10. public native static int add(int a,int b); 11. public static void main(String[] args) { 12. System.out.println(add(7,2)); 13. } 14.} package com.testJni.testDemo;public class Demo { static { //System.out.println(System.getProperty("java.library.path")); System.loadLibrary("testDll"); System.loadLibrary("jniDll"); } public native static int add(int a,int b); public static void main(String[] args) { System.out.println(add(7,2)); }}四 最后补充 如果系统已经加载过c/cpp的dll,我们就不用再System.loadLibrary("testDll")了,加载一遍就可以了,因为我们刚才写的testDll系统没有加载,所以我就加载了一下。对于多个dll可以写多个System.loadLibrary去加载,修改static{}里面的内容不需要重新生成dll,除非你多加了一个调用方法,如果你看清楚规则,就不用javah命令就可以直接编写头文件,用javah太麻烦了。

java中可以调用c++函数吗

用 Runtime 的 exec 方法的确是可行的。假设我们已经把以下的 C 程序编绎成 adder.exe:#include <stdio.h>int main() { /* 简单地循环打印标准输入上的两个整数之和 */ int a, b, lineNumber = 0; while (scanf("%d %d", &a, &b)) printf("Line# %d %d + %d == %d ", ++lineNumber, a, b, a + b); return 0;}以下的 Java 程序可以在启动 adder.exe 后,跟 adder.exe 的标准输入和输出接轨,然后持续不断地向它发送数据和索取结果:import java.io.*;class C { public static void main(String[] args) throws Exception { final Process proc = Runtime.getRuntime().exec("adder.exe"); // 用另一个线程把参数送到 proc 的标准输入上去。 new Thread() { public void run() { OutputStream stdin = proc.getOutputStream(); for (int i = 0; ; i++) { try { Thread.sleep(1); // 要休息片刻才看得到 I/O 的缓存效果。 stdin.write((i + " " + i + " ").getBytes()); } catch (Exception ex) { ex.printStackTrace(); } } } }.start(); // 主线程负责读取并打印 proc 的标准输出。 BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream())); for (String line; null != (line = stdout.readLine()); ) System.out.println(line); }}循环里的 Thread.sleep(1) 纯粹是为了凸显 I/O 的缓存效果。我测试时看到大约 900 行的缓存量(用 32-bit XP 和 Java 1.6)。

怎样在linux环境下使用java调用C++动态链接库时将图片字节流传到C++方法的void*参数中?(使用的JNA)

用Jni首先 java 中 public class TestHello {static {System.loadLibrary("TestHellos");}public static native void hello(String msg);public native void GetSysID();public native String GetKeyCode(String sysId);public native boolean TestKeyCode(String sysId, String keyCode);public static void main(String[] args) {// hello("Hello,Kimm!");TestHello t= new TestHello();t.GetSysID();}}用javac TestHello.java, java TestHello,javah -classpath . -verbose TestHello 。将生产的头文件用到C++ 中的 HeardFileds 中。然后在 sources files 中实现 heardfieds 的方法。实现的方法,其实就是你要调用C++的方法、void main() //主函数

java定义一个方法siZe, 设置三个参数,两个数字为jint型,-一个符号为char型在?

public void size(int a,int b,char c){}

java 如何调用dll?

可以使用JNI调用,只要你有那个dll,知道里边的函数信息就行,如有不懂,再给你细说

java 读取DLL 咋弄?

一、建立java文件注意点:1.要对dll里面的方法做本地声明 2.加载dll示例代码:public class testdll { static{ System.loadLibrary("goodluck"); //注意:不写扩展名,名字要与dll的文件名一致 } public native int getValue(); public native void setValue(int i); /** * @param args */ public static void main(String[] args) { testdll test=new testdll(); test.setValue(10); System.out.println(test.getValue()); }}二、编译javac testdll.java ------如果没有错,进行下一步javah testdll ------生成testdll.h这个头文件三、实现步骤一中声明的方法打开VC++6.0,建立一个dll空工程,把testdll.h导入工程中,新建一个test.cpp源文件打开testdll.h,发现里面有两个方法:/* * Class: testdll * Method: getValue * Signature: ()I */JNIEXPORT jint JNICALL Java_testdll_getValue (JNIEnv *, jobject);/* * Class: testdll * Method: setValue * Signature: (I)V */JNIEXPORT void JNICALL Java_testdll_setValue (JNIEnv *, jobject, jint);JNIEXPORT不用管,第二个单词jint/void是返回值,jint相当于int类型,JNICALL不用管,每一个方法名前都有前缀Java_testll_,前两个参数JNIEnv *和jobject不用管,第二个方法的第三个参数jint就是java文件里的int i。上面有声明了,现在就要实现这两个方法,把代码补充进来吧:)示例代码:#include "testdll.h"int i=0;JNIEXPORT jint JNICALL Java_testdll_getValue(JNIEnv *, jobject){ return i;}JNIEXPORT void JNICALL Java_testdll_setValue(JNIEnv *, jobject, jint j){ i=j;}四、编译此时编译会出现error,主要是提示找不到jni.h(这个包含在testdll.h)里,需要我们把jni.h、jni_md.h复制到C:Program FilesMicrosoft Visual StudioVC98Include这个目录里(默认安装目录,如果安装VC不是这个目录,请自行找到Include目录)。jni.h------------------jdk安装目录includejni_md.h------------jdk安装目录includewin32然后再编译,构建,就有了test.dll这个动态链接库文件了,把它重命名成goodluck.dll,然后复制到testdll.java的目录下,运行吧:)java testdll结果:10

java如何调用c++里面的方法?

下面我再给出一个用上面所说的方法调用Windows API的例子,还可以用同样的方法通过JNI使用OpenGL、获取硬件信息等等。 //这段程序应存成.c文件 JNIEXPORT void JNICALL Java_OrderServerImpl_shutDown(JNIEnv *env, jobject this) //在这里实现java类中定义的方法 { jclass cls; jfieldID fid; DataSet *ds; cls = (*env)->GetObjectClass(env, this); fid = (*env)->GetFieldID(env, cls, "dataSet", "J"); ds = (DataSet *) (*env)->GetObjectField(env, this, fid); /*通过DataSet指针使用 API */ DSshutDown(ds); } 这是假定了现有服务器通过其API定义的DataSet类型得到了引用。指向服务器 DataSet的指针存储在dataSet域中。当客户机调用shutDown时,服务器的shutDown方法 就会被调用。因为在服务器实现中声明了要用本机方法来实现shutDown 方法,所以,RMI 将直接调用这个本机方法。这个本机方法找到对象的dataSet域,得到其值,并用它调用现 有API 的函数DSshutDown。

Java pstmt.setString(1,"%"+keyWord+"%") ;中的"%"+keyWord+"%"是什么意思?

这就是为索引为1的属性列设置值为"%"+keyWord+"%“,并没有什么特殊意义,只是可以使你设置的值中带有%而已

请问这个怎么解决??,chapter1是我存放Hello.java的文件夹,在C盘

你的环境变量class没配,在class中加 .

java程序问题

在程序顶端加上import java.awt.*;

在java中,List和队列Queue的作用有何不同(应用场景)

队列就是先进先出啊,对于数据只处理一次的比较有用。list一般可以反复读取。其实队列可以用list实现,只是queue给了一个简单的实现类而已。

java中Queue为什么不能实例化?

接口不能实例化,意思就是说不能new一个对象。

java LinkedList和Queue,Deque,之间的关系是?

Deque接口继承了Queue接口,而Queue接口继承了Collection接口,LinkedList实现了Deque接口;关系很明显了吧(顶级接口)Collection-->Queue-->Deque-->LinkedList(实现类)

java中创建队列Queue的问题

Queue这是个接口,你要new一个它的实现类;例如:Queuequeue=newArrayBlockingQueue(100);

java中的“queue类”是什么,有什么作用?

java中的queue类是队列数据结构管理类。在它里边的元素可以按照添加它们的相同顺序被移除。队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头都是调用remove()或poll()所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个Queue实现必须指定其顺序属性。offer 添加一个元素并返回true 如果队列已满,则返回falsepoll 移除并返问队列头部的元素 如果队列为空,则返回nullpeek 返回队列头部的元素 如果队列为空,则返回nullput 添加一个元素 如果队列满,则阻塞take 移除并返回队列头部的元素 如果队列为空,则阻塞element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常注意:poll和peek方法出错进返回null。因此,向队列中插入null值是不合法的。还有带超时的offer和poll方法重载,例如,下面的调用:boolean success = q.offer(x,100,TimeUnit.MILLISECONDS);尝试在100毫秒内向队列尾部插入一个元素。如果成功,立即返回true;否则,当到达超时进,返回false。同样地,调用:Object head = q.poll(100, TimeUnit.MILLISECONDS);如果在100毫秒内成功地移除了队列头元素,则立即返回头元素;否则在到达超时时,返回null。阻塞操作有put和take。put方法在队列满时阻塞,take方法在队列空时阻塞。Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。

java中创建队列Queue的问题

JAVA 使用泛型定义类型时,需要有相应的构造方法(带参数)支持;

queue java 是怎么实现的

java中queue的使用Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常offer 添加一个元素并返回true 如果队列已满,则返回falsepoll 移除并返问队列头部的元素 如果队列为空,则返回nullpeek 返回队列头部的元素 如果队列为空,则返回nullput 添加一个元素 如果队列满,则阻塞take 移除并返回队列头部的元素 如果队列为空,则阻塞remove、element、offer 、poll、peek 其实是属于Queue接口。 阻塞队列的操作可以根据它们的响应方式分为以下三类:aad、removee和element操作在你试图为一个已满的队列增加元素或从空队列取得元素时 抛出异常。当然,在多线程程序中,队列在任何时间都可能变成满的或空的,所以你可能想使用offer、poll、peek方法。这些方法在无法完成任务时 只是给出一个出错示而不会抛出异常。注意:poll和peek方法出错进返回null。因此,向队列中插入null值是不合法的。还有带超时的offer和poll方法变种,例如,下面的调用:boolean success = q.offer(x,100,TimeUnit.MILLISECONDS);尝试在100毫秒内向队列尾部插入一个元素。如果成功,立即返回true;否则,当到达超时进,返回false。同样地,调用:Object head = q.poll(100, TimeUnit.MILLISECONDS);如果在100毫秒内成功地移除了队列头元素,则立即返回头元素;否则在到达超时时,返回null。最后,我们有阻塞操作put和take。put方法在队列满时阻塞,take方法在队列空时阻塞。java.ulil.concurrent包提供了阻塞队列的4个变种。默认情况下,LinkedBlockingQueue的容量是没有上限的(说的不准确,在不指定时容量为Integer.MAX_VALUE,不要然的话在put时怎么会受阻呢),但是也可以选择指定其最大容量,它是基于链表的队列,此队列按 FIFO(先进先出)排序元素。ArrayBlockingQueue在构造时需要指定容量, 并可以选择是否需要公平性,如果公平参数被设置true,等待时间最长的线程会优先得到处理(其实就是通过将ReentrantLock设置为true来 达到这种公平性的:即等待时间最长的线程会先操作)。通常,公平性会使你在性能上付出代价,只有在的确非常需要的时候再使用它。它是基于数组的阻塞循环队 列,此队列按 FIFO(先进先出)原则对元素进行排序。PriorityBlockingQueue是一个带优先级的 队列,而不是先进先出队列。元素按优先级顺序被移除,该队列也没有上限(看了一下源码,PriorityBlockingQueue是对 PriorityQueue的再次包装,是基于堆数据结构的,而PriorityQueue是没有容量限制的,与ArrayList一样,所以在优先阻塞 队列上put时是不会受阻的。虽然此队列逻辑上是无界的,但是由于资源被耗尽,所以试图执行添加操作可能会导致 OutOfMemoryError),但是如果队列为空,那么取元素的操作take就会阻塞,所以它的检索操作take是受阻的。另外,往入该队列中的元 素要具有比较能力。最后,DelayQueue(基于PriorityQueue来实现的)是一个存放Delayed 元素的无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的 Delayed 元素。如果延迟都还没有期满,则队列没有头部,并且poll将返回null。当一个元素的 getDelay(TimeUnit.NANOSECONDS) 方法返回一个小于或等于零的值时,则出现期满,poll就以移除这个元素了。此队列不允许使用 null 元素。

JAVA: 在类 DrumKit 中找不到主方法, 请将主方法定义为

然后main方法要在public class中

如何在java中实现md5加密和解密

package endecrypt; 02. 03.import java.io.UnsupportedEncodingException; 04.import java.security.MessageDigest; 05.import java.security.NoSuchAlgorithmException; 06. 07./** 08. * 采用MD5加密解密 09. * @author tfq 10. * @datetime 2011-10-13 11. */ 12.public class MD5Util { 13. 14. /*** 15. * MD5加码 生成32位md5码 16. */ 17. public static String string2MD5(String inStr){ 18. MessageDigest md5 = null; 19. try{ 20. md5 = MessageDigest.getInstance("MD5"); 21. }catch (Exception e){ 22. System.out.println(e.toString()); 23. e.printStackTrace(); 24. return ""; 25. } 26. char[] charArray = inStr.toCharArray(); 27. byte[] byteArray = new byte[charArray.length]; 28. 29. for (int i = 0; i < charArray.length; i++) 30. byteArray[i] = (byte) charArray[i]; 31. byte[] md5Bytes = md5.digest(byteArray); 32. StringBuffer hexValue = new StringBuffer(); 33. for (int i = 0; i < md5Bytes.length; i++){ 34. int val = ((int) md5Bytes[i]) & 0xff; 35. if (val < 16) 36. hexValue.append("0"); 37. hexValue.append(Integer.toHexString(val)); 38. } 39. return hexValue.toString(); 40. 41. } 42. 43. /** 44. * 加密解密算法 执行一次加密,两次解密 45. */ 46. public static String convertMD5(String inStr){ 47. 48. char[] a = inStr.toCharArray(); 49. for (int i = 0; i < a.length; i++){ 50. a[i] = (char) (a[i] ^ "t"); 51. } 52. String s = new String(a); 53. return s; 54. 55. }

JAVA的md5解密后怎么是乱码,问题出在哪里

MD5是单向加密的,不管何种数据进行MD5加密都会得到固定长度的字符串,MD5一般用户文件完整性的校验,也有用来做密码加密的。想要破解MD5,因其本身的算法不可逆,故只能使用穷举法,也就是不断拼字符串加密和已知的MD5字符串进行比对,这是一个相当大的工程,需要庞大的数据基础。

md5加密后javascript怎么解密

无法解密,md5的特性就是只能加密,所以用md5加密的时候,一定要记住你填写的内容,否则只能用重置的办法才能解决忘记的问题了。MD5加密步骤:1、百度”站长工具“,点击打开。2、然后点击导航里的”代码转换工具“,选择”MD5加密“。3、然后输入欲加密的字符串,选择多少位,然后点击“加密”即可。

Java MD5如何解密?

MD5 不能解密, MD5的破解方式就是 把不同的字符串按MD5加密 然后对比加密后的结果是不是一样. 在线MD5解密 也是这样的原理.

md5加密后javascript怎么解密

MD5是消息摘要算法,没有解密这一说,作用是验证信息的一致性。你看看百科。

java 中timer类的用法是什么?

所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 J2SE 或者 J2ME 日历应用程序需要根据用户的约定计划闹铃时间。不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。  把 java.util.Timer 和 java.util.TimerTask 统称为 Java 计时器框架,它们使程序员可以很容易地计划简单的任务(注意这些类也可用于 J2ME 中)。在 Java 2 SDK, Standard Edition, Version 1.3 中引入这个框架之前,开发人员必须编写自己的调度程序,这需要花费很大精力来处理线程和复杂的 Object.wait() 方法。不过,Java 计时器框架没有足够的能力来满足许多应用程序的计划要求。甚至一项需要在每天同一时间重复执行的任务,也不能直接使用 Timer 来计划,因为在夏令时开始和结束时会出现时间跳跃。  本文展示了一个通用的 Timer 和 TimerTask 计划框架,从而允许更灵活的计划任务。这个框架非常简单 ?? 它包括两个类和一个接口 ?? 并且容易掌握。如果您习惯于使用 Java 定时器框架,那么您应该可以很快地掌握这个计划框架。  计划单次任务  计划框架建立在 Java 定时器框架类的基础之上。因此,在解释如何使用计划框架以及如何实现它之前,我们将首先看看如何用这些类进行计划。  想像一个煮蛋计时器,在数分钟之后(这时蛋煮好了)它会发出声音提醒您。清单 1 中的代码构成了一个简单的煮蛋计时器的基本结构,它用 Java 语言编写:清单 1. EggTimer 类package org.tiling.scheduling.examples;import java.util.Timer;import java.util.TimerTask;public class EggTimer { private final Timer timer = new Timer();private final int minutes;public EggTimer(int minutes) { this.minutes = minutes;}public void start() { timer.schedule(new TimerTask() { public void run() { playSound(); timer.cancel();} private void playSound() { System.out.println("Your egg is ready!");// Start a new thread to play a sound...} }, minutes * 60 * 1000);} public static void main(String[] args) { EggTimer eggTimer = new EggTimer(2); eggTimer.start();}}  EggTimer 实例拥有一个 Timer 实例,用于提供必要的计划。用 start() 方法启动煮蛋计时器后,它就计划了一个 TimerTask,在指定的分钟数之后执行。时间到了,Timer 就在后台调用 TimerTask 的 start() 方法,这会使它发出声音。在取消计时器后这个应用程序就会中止。

java中sao是什么?有什么功能?与dao有什么区别?感激不尽!

DAOuff0cData Access Objectuff1bSAOuff0cService Access Objectu3002

java第八章回答接口的问题

。。。。毫无技术含量啊。。直接按照要求来就行了啊

Android Studio3.3.1 中修改R.java文件的默认生成路径

按照下面的步骤就可以在Android studio中找到R.java文件。1、首先创建一个新的项目,项目的目录如下:2、在这个项目列表中是没看到R.java文件的,要切换项目列表试图为project。3、依次,打开app-->build-->generated-->source-->r-->debug,在debug中的两个选项的子文件中分别有有一个R文件,既就是R.java文件。

求一个javax.annotation.Generated,该注解的使用实例。

import com.fasterxml.jackson.annotation.JsonProperty;import org.springframework.validation.annotation.Validated;/*** Customer 客户表*/@Validated@javax.annotation.Generated(value = "com.data.codegen.languages.SpringCodegen", date = "2019-03-17T06:52:57.226Z")public class Customer {@JsonProperty("id")private Long id = null;@JsonProperty("phone")private String phone = null;@JsonProperty("password")private String password = null;}

java中label语句是什么?

label就是标签。在一条语句的开头加一条标签,就对该语句进行了标记,如果你在某条程序运行后向跳转到那条被标记的语句,这时候就用到它了。

java用递归的方法求分数的和怎么算

具体点,这听不懂你在说什么,什么叫‘求分数"?

java高手帮帮忙。老师出的实验题目,实在是不会阿。

本来就有除数为0的异常,你再写一个不是多此一举吗.

java 中的 integration是什么意思

集成的意思

请问java中的signature是什么意思?是属性的意思吗

public static void main(String[ ] args){}

Exception in thread "main" java.lang.ClassCastException: java.lang.String

找不到MAIN函数你MAIN函数写了没JDK配置对不对

如何用java编程将国家名称提出来?

String.split()

java怎么判断电脑是否有音频输出设备?

楼主,我是来学习的

java音频处理问题

为什么audioFormat.getChannels(), 一次后还要再一个audioFormat.getChannels()*2每声道每帧字节数2字节,再加上双声道所以用声道数(2)*字节数(2) = 每帧的总字节数看来你的audioFormat不是从AudioInputStream中产生的啊?刚才回答你的问题我还没注意。原来audioFormat也可以new出来的啊,嘿嘿。

电脑玩我的世界为什么还要安装Java?

自己去官网下载。一般下载JRE足以。

关于java.lang包的lang的全称,谁知道?

.....你想象力很丰富 可以编一个同人 哈哈

我的世界必须安装JAVA环境吗

是一个以java语言制作的半独立游戏,需要java数据库。

Java里面的那个lang是什么意思?注意不是long

不知道你说的是不是那个包名;java.lang.----

java.lang包中的lang是什么意思?

java中最基本的包

java.lang是什么意思

lang 是 language(语言) 的简写是java中常用方法最多的包 包含常用类 软件包 java.lang 的描述提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。   把基本类型的值当成一个对象来表示通常很有必要。包装器类 Boolean、Character、Integer、Long、Float 和 Double 就是用于这个目的。例如,一个 Double 类型的对象包含了一个类型为 double 的字段,这表示如果引用某个值,则可以将该值存储在引用类型的变量中。这些类还提供了大量用于转换基值的方法,并支持一些标准方法,比如 equals 和 hashCode。Void 类是一个非实例化的类,它保持一个对表示基本类型 void 的 Class 对象的引用。   类 Math 提供了常用的数学函数,比如正弦、余弦和平方根。类似地,类 String 和 StringBuffer 提供了常用的字符串操作。   类 ClassLoader、Process、Runtime、SecurityManager 和 System 提供了管理类的动态加载、外部进程创建、主机环境查询(比如时间)和安全策略实施等“系统操作”。   类 Throwable 包含了可能由 throw 语句抛出的对象(§14.16)。Throwable 的子类表示错误和异常。   包规范  字符编码  java.nio.charset.Charset 类的规范描述了字符编码的命名约定,以及每个 Java 平台实现必须支持的标准编码集。

java类创建方法?

五级果然不一样,回答的简单但正确,同意!!

JavaScript 拖动和缩放

设置z-index属性

三星S5230C猫版装ANYVIEW和百阅时提示Java.LANG.SecuityException:Application not authorized to access

AVA授权问题。。。(手动授权)一、把软件安装到内存卡。二、连接内存卡到电脑上 以U盘形式。然后打卡U盘 在工具栏上点击工具---文件夹选项--查看---显示所有文件和文件夹,。你回发现多了个隐藏文件夹叫 .system三、进入 system---JAVA---DownloadApps--然后你会发现很多以MIDlet****命名的文件夹。这些都是JAVA软件安装后的文件夹。找到你安装的新软件。一般是最后一个。。就是数字最大的。 四、用记事本打开registry文件,这里你可以看到软件的名称。查找Domain,吧后面的Untrusted改成Manufacturer 保存关闭。五、打开手机。选择软件。按住屏幕3秒调处管理--许可。。将里面的选项全部在选择从不询问。。六、软件授权软件可以达到。一般目前的刷机包都自带软件授权功能了 他这里说的这个软件就是TIKI2.2,可以带S5230C贴吧的共享盘下载.

java 中launch是什么意思?

是执行的意思

java中launch是什么意思

调用ClientSocketFrmApp.class

怎样实现javascript中layer位置的相对定位

通过JS设置css样式么? 可以查找下CSS的定位,然后JS操作CSS属性值。

怎样实现javascript中layer位置的相对定位

<SCRIPT language=javascript> var divshow; function divshow() { divshow=new Chip("divshow",120,60); movechip("divshow"); } function Chip(chipname,width,height) { this.named=chipname; this.w=width; this.h=height; this.xx=0; this.yy=0; this.timer1=null; } var chip; var timer1; function movechip(chipname) { eval("chip="+chipname); pageX=window.document.body.scrollLeft; pageY=window.document.body.scrollTop; pageW=window.document.body.offsetWidth-40; pageH=window.document.body.offsetHeight-20; chip.xx=pageX+pageW-chip.w; chip.yy=pageY+pageH-chip.h; eval("document.all."+chip.named+".style.pixelLeft="+chip.xx); eval("document.all."+chip.named+".style.pixelTop ="+chip.yy); chip.timer1=setTimeout("movechip(""+chip.named+"")",100); }</SCRIPT><BODY onload=divshow()><table height=800><tr><td>你说的是这种东东吗?</td></tr></table><DIV id=divshow style="POSITION: absolute"> </A> </DIV></BODY></HTML>

JavaScript怎么写就能让字在网页中一个一个打出来

document.writeln();

请javascript高手来解释这两段代码

你是用DW生成的代码吧~这种代码跟加密代码差不多~没法读取,不要用DW生成页面,不好用,也不好读,到时候改都不好改,还是自己去学学JS吧~

帮我解释JavaScript中的函数MM_findObj

貌似 自动复制的代码吧

chatbox会不会代替java程序员

随着ChatGPT的出现,很多原来需要人工完成的事情可以由它来取代了,比如它可以编辑文案,甚至编程。……但是ChatGPT的出现并不会完全取代底层程序员,使底层程序员失业。之所以这样说,是因为ChatGPT创新能力不足、ChatGPT编写的代码并不完善,以及ChatGPT对于重复性工作完成度较好这三方面原因。1,ChatGPT对于重复性工作的完成度较好,因此可以取代底层程序员的部分工作。不可否认的是,ChatGPT在完成重复性任务方面有着更高的效率和准确度。……它可以快速检索到更准确的代码,并将其编写完成,这样就极大地提高了这方面工作效率。……在这个方面,ChatGPT确实比底层程序员具备更高的效率,可以取代他们在这方面的工作。2,ChatGPT编写的代码并不完善,因此无法完全取代底层程序员的工作。虽然ChatGPT可以变写代码,但是目前来说它所编写的代码并不完善,甚至可以说存在着很大的问题。……具体来说,对于普通人来说,ChatGPT编写的代码很漂亮。但是对于专业人士来说,却可以发现ChatGPT编写的代码存在很多错误。因此在这个方面ChatGPT是无法完全取代底层程序员的。3,由于ChatGPT创新能力不足,因此并不会使底层程序员失业。需底层程序员相比,ChatGPT最大的劣势就是创新能力不足。……具体来说,它只能在已有知识的基础上完成给出的工作任务,而在创新能力方面则存在不足。这就使得ChatGPT无法完全取代底层程序员的工作,也就不会使底层程序员失业了。……但是ChatGPT部分取代底层程序员的工作任务还是完全可能的,因此底层程序员的工作状态会因为ChatGPT的出现而有所改变。

Html5和Javascript是什么关系

HTML5是用于建立网页基本框架的JavaScript是用来跟用户交互以及实现动态效果的

java天空什么游戏

叙事类解密冒险游戏。《天空(Firmament)》java版采用功能强大的虚幻4引擎打造,是一款叙事类解密冒险游戏,充满展现了冬季寒冷环境下深山场景中的荒凉感。《天空(Firmament)》java版故事发生美国中心地带的一座荒凉小镇撒花姑娘,镇上的所有人都被困在了黑暗之中,道路上游荡的神秘生物正对自己的产生相当大的威胁。

java中SwingConstants.LEADING

你的问题太宽泛了

java读取、修改、写入txt文件

一行一行放入,一行一行读再用Double.parseDouble()方法解析

java 关于创建txt文件并下载的实现方法

String name = Util.DOWNLOAD+"123.TXT"; FileOutputStream fos; try{ fos = new FileOutputStream(name); }catch (Exception e) { path = new File(name); if(!path.exists()){ path.mkdirs(); } fos = new FileOutputStream(name); }

怎么将一个java程序的结果输出到文本文档中,写一段代码,谢谢

直接用输出重定向就行了,没必要写代码.

请问用java创建一个TXT文件,文件里写“你好”,代码怎么写

import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class Io{ public static void main(String [] s){ File filename = new File("F:\suncity.txt"); String filein="你好!"; RandomAccessFile mm = null; try { mm = new RandomAccessFile(filename,"rw"); mm.writeBytes(filein); } catch (IOException e1) { // TODO 自动生成 catch 块 e1.printStackTrace(); } finally{ if(mm!=null){ try { mm.close(); } catch (IOException e2) { // TODO 自动生成 catch 块 e2.printStackTrace(); } } }}}

javascript:location.href=这段代码写在JS里的吗

不是,是写在html与js交互时用到,如:<a href="javascript:void(0);" onclick="javascript:location.href="http://www.166suncity.com";">点击后跳转到http://www.166suncity.com</a>

java中 :Good good study,好好学习,天天向上,Day day up这句话如何把里面的英文提取出来,求代码

截取字符串就可以了

java连接mysql出现异常No operations allowed after connection closed,怎么破?

你的这个报错是不是一般都是第二天早上第一次访问时出现。然后第二次就好了,如果是的话,是因为:mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。当使用是重新建立connection,看情况是不是你的网站访问量应该不大。查看服务器wait_timeout是不是28800mysql﹥ show global variables like "wait_timeout"; +---------------+---------+ | Variable_name | Value | +---------------+---------+ | wait_timeout | 28800 | +---------------+---------+ 1 row in set (0.00 sec) 如果是的话把时间改长些。

FTP 连接报错 java.net.ConnectException: Connection refused: connect

连接出错了

怎么用java代码创建ftp用户和密码

你的意思是不是怎样用java代码来登录ftp?

java里的JSONObject作用是什么?什么时候用?

我写过这种代码,首先我觉得JSONObject和request.setAttribute()没有关系。JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。你们使用request.setAttribute()是同步返回数据吧?如何同步或者异步返回页面数据与数据结构没有关系。如果是同步返回数据,就使用request.setAttribute("key",jsonObject),如果是异步返回数据就使用流方式把jsonObject.toString 返回给页面。我觉得使用JSONObject的好处就是可以减少自己定义的bean。在页面上也可以类似于对象的形式使用返回的数据。对于你的第二个问题,如果我理解了你的意思,我觉得struts2 的属性驱动(直接定义参数使用get set方法获取参数)和模型驱动(使用bean 来获取参数)和JSONObject更不相干了,两者没关系的。

JAVA里==比较得是对象得什么?

==是判断str1和str2是否指向同一个对象

java的根类是哪个。

  java.lang.Objet  Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

怎么用java代码创建北京时间

一楼的对,但是yyyy-MM-dd hh:mm:ss 那个hh 应该是 HH

一个java编程题,怎么求出数组中重复数字的出现次数,并按次数从大到下排序

用增强FOR循环

java Collections.sort实现的排序是升序还是降序

默认的是升序但你既然知道Comparator,你就可以让它降序例如:比如原来你的comparator方法,返回的是class A{int a;}comparator(A a1,A a2){return a1.a-a2.a}//升序comparator(A a1,A a2){return a2.a-a1.a}//降序

Java中的comparator 怎么使用Collections.max求出最大值

Collections.max(值)中的值要符合comparator的要求即可。一般比较的函数是自定义的。
 首页 上一页  37 38 39 40 41 42 43 44 45 46 47  下一页  尾页