通过java jna 调用datastage c api 例子如下,这是运行作业的例子 经测试是可行的。 import com.sun.jna.Library; import com.sun.jna.Structure; import com.sun.jna.Union; import com.sun.jna.Native; /** Simple example of native library declaration and usage. */ public class dsjobc { public static class time_t extends Structure { public int value; public time_t() {} public time_t(int value) { this.value = value; } } public static class DSPROJECT extends Structure{ public int dsapiVersionNo; public int sessionId; public byte valueMark; public byte fieldMark; } public static class DSJOB extends Structure{ public DSPROJECT hProject; /* Reference to project handle for job */ String serverJobHandle; /* Text of handle to job on server */ String logData; /* Cached log summary data */ int logDataLen; /* Size of log summary data */ int logDataPsn; /* Current position in logData */ } public static class DSparamValue extends Union{ String pString; String pEncrypt; int pInt; float PFloat; String pPath; String pDate; String pTime; } public static class DSPARAM extends Structure{ int paramType; } public interface libvmdsapi extends Library { libvmdsapi INSTANCE = (libvmdsapi)Native.loadLibrary("vmdsapi",libvmdsapi.class); public DSPROJECT DSOpenProjectEx(int serial,String pro); public DSJOB DSOpenJob(DSPROJECT pro,String job); public int DSLockJob(DSJOB job); public int DSRunJob(DSJOB job, int flag); // public int DSGetJobInfo(DSJOB job, int flag, DSJOBINFO info); public int DSSetParam(DSJOB job, String str, DSPARAM pam); } public static void main(String[] argv) { DSPROJECT proj; DSJOB dsjob; // DSJOBINFO info; proj=libvmdsapi.INSTANCE.DSOpenProjectEx(1,"B610_ODSB"); dsjob=libvmdsapi.INSTANCE.DSOpenJob(proj,"ss"); int lock= libvmdsapi.INSTANCE.DSLockJob(dsjob); // int jofs= libvmdsapi.INSTANCE.DSGetJobInfo(dsjob,1,info); // System.out.println("jofs:"+jofs); System.out.println("lock:"+lock); System.out.println("dsapiv:"+proj.dsapiVersionNo+"/ndsapi_sessionid:"+proj.sessionId); System.out.println(dsjob.logData); // System.out.println("jobname:"+info.info.jobName); int runf = libvmdsapi.INSTANCE.DSRunJob(dsjob,1); System.out.println("runflag:"+runf); } }