Java 在vbScript中获取类型不匹配错误

Java 在vbScript中获取类型不匹配错误,java,vbscript,Java,Vbscript,我在上面写了这个简单的vbScript,当我试图从Java调用这个代码时 Set args = WScript.Arguments dim rec rec = args.Item(1)&" "&args.Item(2) return rec import java.io.*; 类运行时演示{ 公共静态void main(字符串[]args){ 进程p=null; 试试{ p=Runtime.getRuntime().exec(“wscript D:/AS/VBScript

我在上面写了这个简单的vbScript,当我试图从Java调用这个代码时

Set args = WScript.Arguments

dim rec

rec = args.Item(1)&" "&args.Item(2)

return rec
import java.io.*;
类运行时演示{
公共静态void main(字符串[]args){
进程p=null;
试试{
p=Runtime.getRuntime().exec(“wscript D:/AS/VBScripts/Sample1.vbs”+args[0]+“”+args[1]+“”+args[2]);
}
捕获(IOE异常){
系统输出打印ln(e);
系统出口(0);
}
p、 waitFor();
InputStream in=p.getInputStream();
对于(int i=0;i

我收到一个错误
“Type mismatch'return'”
。这到底是从哪里来的,正确的解决方案是什么?

您的错误可能来自尝试将“return”设置为值。VBScript不支持“return”。如果您想从函数返回值,您可以这样构造它:

import java.io.*;

 class RuntimeDemo{

   public static void main(String[] args) {

       Process p=null;

   try {  

   p=Runtime.getRuntime().exec("wscript D:/AS/VBScripts/Sample1.vbs " + args[0] +" " + args[1] + " " + args[2]);

   }
   catch( IOException e ) {

      System.out.println(e);

      System.exit(0);
   }
    p.waitFor();  

    InputStream in = p.getInputStream(); 

    for (int i = 0; i < in.available(); i++) {

                System.out.println("" + in.read());
函数GetParams() 暗wsh、args、rec 设置wsh=CreateObject(“WScript.Shell”) set args=wscript.arguments 如果args.Count=2,则 rec=args(1)和“”&args(2) elseif args.count=1 rec=args(1) 其他的 rec=“” 如果结束 GetParams=rec 端函数
在VB和vbScript中,您的“返回值”是通过将值指定给函数名来设置的,正如我前面所做的那样

当然,您需要小心,因为如果没有传入参数2,那么最终会出现数组下标错误,因此请始终使用args.Count,正如我在尝试单独访问参数之前所演示的那样


如果您有一个更具体的问题,或错误,或解释您正在做什么,我们可能会给您一个更好的答案…

您的答案的第一部分是正确的,但第二部分是错误的。的文档对此并不十分清楚,但快速测试表明,当您尝试访问一个不存在的参数时,WScript只会抛出一个错误错误(它不返回Null)。此外,Null可以与字符串连接;它被视为零长度字符串().啊,是的…不知道我写这篇文章时在想什么!Duh..当然,如果您尝试访问一个不存在的参数,它将抛出一个错误,因为它位于数组中,而该元素将不存在。感谢您指出这一点,我将编辑答案以确保信息准确。。。
function GetParams()
  dim wsh, args, rec
  set wsh = CreateObject("WScript.Shell")
  set args = wscript.arguments
  if args.Count <= 0 then
    GetParams = ""
    exit function
  end if

  if args.Count >= 2 then
    rec = args(1) & " " & args(2)
  elseif args.count = 1
    rec = args(1)
  else
    rec = ""
  end if
  GetParams = rec
end function