「java调用vc」java调用vuecli生成项目
本篇文章给大家谈谈java调用vc,以及java调用vuecli生成项目对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、用Java怎么调用C语言已经编写好的DLL?
- 2、JAVA调用C语言发布的webservice接口
- 3、如何用VC编写供JAVA调用的DLL
- 4、关于JAVA和VC
- 5、java使用JNI调用VC6.0编写的动态链接库dll,如何移植到linux环境下使用?
- 6、通过Java连接vShpereClinet对VC虚拟机进行管理
用Java怎么调用C语言已经编写好的DLL?
1. 编写范例文档 public class TestNative { private native static int Max(int a,int b); public static void main(String[] args) { System.out.println(Max(4,5)); } static { System.loadLibrary("VCdll"); } } 其中 LoadLibrary中的DLL文件名称可以随便定.只要做好的动态链接库改名成这个字符串就可以了.而native函数的来源就是该动态链接库. 2. 做好该步准备以后,用javac TestNative.java生成TestNative.class. 检验语法. 3. 语法检查通过以后,用javah TestNative生成TestNative.h的C++头文件. 4. 用VC++6.0创建dll文件: 1msdev-new-project-win32 Dynamic-Link Library 2Enter project name (e.g. VCdll) 3choose "An empty DLL project"-finish 4将3生成的TestNative.h和jdk下的jni.h和jni_md.h加入到工程中去 5Create a c++ file, implements the native method. as follows: //TestNative.cpp #include "TestNative.h" JNIEXPORT jint JNICALL Java_TestNative_Max (JNIEnv * a, jclass b, jint x, jint y) { return x y ? x : y; } 备注: A 其中的jni.h通常在 jdk\include\ 可以先拷贝到VC安装目录下的include目录下.一劳永逸,以后可以方便使用JNI技术. B 全部的数据类型需要考虑Java和VC的接口问题.用jint jstring 等. C 函数名称和自动生成的.h文件中规定的一致.命名规则是: Java_使用类_方法名 6. 全编译一下VC++工程. 如果没有出错,则此时生成动态链接库成功. 把动态链接库VCdll.dll拷贝到TestNative.java所在的目录上. 7.运行java TestNative. OK :-)
参考资料:
JAVA调用C语言发布的webservice接口
Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint = "WebService服务地址";
// 创建 Service实例
Service service = new Service();
// 通过Service实例创建Call的实例
Call call = (Call) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName("", "string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
"Exception",
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));
//调用Web Service,传入参数
String res = ( String ) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}
2、利用Eclipse自动生成WebService client代码就容易多了:
首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish
这样,WebService Client代码已经生成好了。
接下来写一个Test类,在main函数中输入如下代码:
String endpoint = "服务器的WebService的地址";
YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);
try {
String resultStr = umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
} catch (Exception e) {
System.out.println("异常");
e.printStackTrace();
} catch (RemoteException e) {
System.out.println("RemoteException异常");
e.printStackTrace();
}
如何用VC编写供JAVA调用的DLL
}(2)编译该java文件,再编译生成头文件(供vc使用)javac GB2PY.java //编译生成class(3)在当前文件夹下创建 com/bw/gb2py 文件夹,将GB2PY.class放入该文件夹,回到当前文件夹,调用javah命令生成头文件。javah com.bw.gb2py.GB2PY //生成头文件,文件名为com_bw_gb2py_GB2PY.h注意头文件中的内容不能更改,否则生成的dll不能使用(4)在VC中新建名为GB2PY的Win32 dll工程,将com_bw_gb2py_GB2PY.h拷贝到工程目录下,并加入工程。再拷贝%JAVA_HOME%/include/jni.h 和 %JAVA_HOME%/include/win32/jni_md.h 到工程目录下,并加入工程。(5)实现com_bw_gb2py_GB2PY.h中声明的方法:Java_com_bw_gb2py_GB2PY_GetPY。注意java string和c中char的转换。java的string都用unicode编码(双字节),而char是单字节的。int (*GetPY)(char* szGBString,PY oPY);JNIEXPORT jstring JNICALL Java_com_bw_gb2py_GB2PY_GetPY (JNIEnv * env, jclass, jstring name){static HMODULE hModle = LoadLibrary("PYconvert.dll"); //第三方dll GetPY = (LPFUN)GetProcAddress(hModle,"GBToPY");int len;char charName[128]; char charPY[512]; len = env-GetStringLength(name) * 2 + 1; //双字节长度转为单字节长度,加1是为了加结束符 memset(charName, 0, len); const wchar_t * w_buffer = env-GetStringChars(name, 0); int wlen = wcslen(w_buffer); len = WideCharToMultiByte(CP_ACP, 0, w_buffer, wcslen(w_buffer) + 1, charName, len, NULL, NULL); env-ReleaseStringChars(name, w_buffer);//以上代码将java string name中的内容拷贝到了char数组charName中... //省略部分功能代码,通过调用第三方的dll函数将汉字转换为拼音,存储在charPY数组中 int slen = strlen(charPY); jchar * buffer = new jchar[slen]; len = MultiByteToWideChar(CP_ACP, 0, charPY, strlen(charPY), buffer, slen); if (len 0 len slen) buffer[len] = 0;//以上代码将char型字符串转换为jchar型字符串 jstring js = env-NewString(buffer, len); delete [] buffer;return js;}(6)编译生成dll文件,在java中就可以调用了(要用到第二步生成的类)!:)
关于JAVA和VC
1.楼主,你所指的word是微软office的那个吗?
把主要功能嵌入到word中,这个“主要功能”如何理解?界面工具栏的东西?还是窗口拖动的功能什么的?
首先说office界面上的东西不兼容Java,只能用VC特定的控件实现。如果非要用Java实现也可以,用JNI,这个就比较麻烦了,是用C++写的底层,然后Java在上面调用,其中变量的二进制值是不一样的(Java用的整形是jint型,和C++里的不一样)。无论两者用哪种方法实现,一般不会有兼容性问题。
2.只要控制得当,一般不会出现兼容性问题。除非使用了Hook(杀毒软件检测到用了Hook,默认是会把程序拦截掉的)。当然,一定是底层用C++,上层用Java。
java使用JNI调用VC6.0编写的动态链接库dll,如何移植到linux环境下使用?
你想要的应该基本不可能实现了,gpsun.lib是在window下生成的静态库,是不能在linux上直接调用的,如果你清楚gpsin的实现,可以在linux下编一个自己的静态库,是以.a结尾的,然后在linux上编译.so文件时将这个.a文件链接进去,最后就可以用jni去调用了
通过Java连接vShpereClinet对VC虚拟机进行管理
因为客户端和服务端的版本不匹配,浏览器输入vcenter地址,下载VMware-viclient.exe,重新安装客户端。 Vcenter一般指 VMware vCenter™ Server。 2. VMware vCenterServer 提供了一个可伸缩、可扩展的平台,为 虚拟化管理奠定了基矗 VMwar...
关于java调用vc和java调用vuecli生成项目的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。