请教有关main method的问题 String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin";String[] args = new String[1];args[0] = s;Emulator.main(args); //这样可以 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我这么做实在有苦衷,想不到其他办法,大家有空帮忙看看我之前发的帖子http://community.csdn.net/Expert/topic/3769/3769180.xml?temp=.6164057这个帖子的Emulator class就是上述帖子里的com.sun.kvem.toolbar.Main class,下面是我反编译Main.class后部分代码:------------------------------------package com.sun.kvem.toolbar;import com.sun.kvem.environment.JavaVersionTester;import com.sun.kvem.util.ToolkitResources;import com.sun.kvem.util.WindowUtils;import java.io.PrintStream;import java.util.Properties;import java.util.Vector;import javax.swing.JOptionPane;public class Main{ /* member class not found */ class SplashWindow {} public Main() { } public int run(String as[]) { as = processArgs(as, 0); WindowUtils.setLookAndFeel(); MainWindow mainwindow = new MainWindow(); mainwindow.run(); sw.setVisible(false); sw.dispose(); return 0; } public static boolean checkVMVersion() { ... } public static void main(String args[]) { if(!checkVMVersion()) System.exit(1); sw = new SplashWindow(null); (new Main()).run(args); } private static String[] processArgs(String as[], int i) { Vector vector = new Vector(); for(int j = i; j < as.length; j++) { String s = as[j]; if(s.startsWith("-D") && s.indexOf("=") != -1) { String s1 = s.substring(2); int k = s1.indexOf("="); String s2 = s1.substring(0, k); String s3 = s1.substring(k + 1); System.getProperties().put(s2, s3); } else { vector.add(s); } } String as1[] = new String[vector.size()]; vector.copyInto(as1); return as1; } private static SplashWindow sw;}------------------------------- 参数不对,那是给jvm的参数,不是给main的,main不会认.java -Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22\bin Emulator arg1 arg2 arg3只有Emulator之后的参数才是main的参数. 啊???这么说-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22\bin 参数不可能从程序里传递了? 为了说明清楚,我把之前的帖子再贴一次,谢谢各位我是J2ME的新手,现在学校从事软件测试的研究,想用一种测试工具(TTCN-3)测试MIDlet程序,测试工具需要被测程序(MIDlet)能够运行在其测试环境中,但我想MIDlet程序不能独立在emulator之外运行(需要KVM支持),所以我想是否可以自己写程序调用Emulator运行,然后再装载MIDlet程序进行测试。目前Nokia、Motorola和Sun等公司提供的emulator都是用Java写的,都提供了很多.jar库文件,可否通过打开库文件,搞清楚 “启动emulator”时调用的库文件的规律,对其二次编程,将emulator嵌入自己的程序中调用。比如说:运行SUN的WTK22/bin中ktoolbar.bat可以启动J2ME Wireless Toolkits 2.2. ktoolbar.bat内容如下:C:\J2SDK1~1.2_0\bin\java.exe -Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false -cp C:\WTK22/wtklib/kenv.zip;C:\WTK22/wtklib/ktools.zip;C:\WTK22/bin/JadTool.jar;C:\WTK22/bin/MEKeyTool.jar;C:\WTK22/wtklib/customjmf.jar;C:\WTK22/lib/j2me-ws.jar;C:\WTK22/bin/schema2beansdev.jar;C:\WTK22/bin/j2me_sg_ri.jar;C:\WTK22/bin/jaxrpc-impl.jar;C:\WTK22/bin/jaxrpc-api.jar;C:\WTK22/bin/jaxrpc-spi.jar;C:\WTK22/bin/activation.jar;C:\WTK22/bin/mail.jar;C:\WTK22/bin/saaj-api.jar;C:\WTK22/bin/saaj-impl.jar;C:\WTK22/bin/xsdlib.jar com.sun.kvem.toolbar.Main将com.sun.kvem.toolbar.Main.class 引用到另一个java程序中,再将所有上述jar库文件import到程序中,这样是否可以将emulator运行起来?另外,-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false 可否简单地看作是com.sun.kvem.toolbar.Main.class 的main的输入参数?请问各位,上述方法从技术角度上讲,难度和可行性有多大?谢谢各位的建议注:我并非想盗版其他公司的emulator的版权,只是想构建个测试J2ME的测试平台,用于学术研究。XHYJ ---------我的源码-------------import com.sun.kvem.toolbar.Main;class emulator { public static void main(String[] args) { String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin"; String[] args = new String[1]; args[0] = s; Main.main(args); }}--------------------编译出错信息--------------------C:\myprj\test3\emulator.java:5: illegal escape character String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin"; ^C:\myprj\test3\emulator.java:5: illegal escape character String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin"; ^---------修改后源码-----------import com.sun.kvem.toolbar.Main;class emulator { public static void main(String[] args) { String s = "-Dkvem.home"; String[] args = new String[1]; args[0] = s; Main.main(args); }}---------编译出错信息----------C:\myprj\test3\emulator.java:6: args is already defined in main(java.lang.String[]) String[] args = new String[1]; 可以不过你写得有点问题。变量声明重复了。import com.sun.kvem.toolbar.Main;class emulator { public static void main(String[] args) { String s = "-Dkvem.home"; String[] as = new String[1]; as[0] = s; Main.main(as); }} 谢谢 mu_x(阿木) ,好像可以编译通过了,但是当我将string换回原来的"-Dkvem.home=C:\WTK22",就出现如下编译错误:---------我的源码-------------import com.sun.kvem.toolbar.Main;class emulator { public static void main(String[] args) { String s = "-Dkvem.home=C:\WTK22"; String[] ar = new String[1]; ar[0] = s; Main.main(ar); }}---------编译出错信息----------C:\myprj\test3\emulator.java:5: illegal escape character String s = "-Dkvem.home=C:\WTK22"; ^1 error 好像java不认识 \各位有否类似经历? \是转意符,想输入\用\\。String s = "-Dkvem.home=C:\\WTK22"; 建议先学习一下java基础,你这个程序有很多毛病。 illegal escape character 编译错误已解决,谢谢!但还是出现 You must define the system property "kvem.home" 错误。我确信已经将-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false 传递给了com.sun.kvem.toolbar.Main 的main函数,而且import了所有的jar文件。请问各位:用java命令行执行中 -Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false 这些参数是传递给JVM的,还是传递给com.sun.kvem.toolbar.Main的main method的?C:\J2SDK1~1.2_0\bin\java.exe -Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false -cp C:\WTK22/wtklib/kenv.zip;C:\WTK22/wtklib/ktools.zip com.sun.kvem.toolbar.Main ----------我的源码-----------import com.sun.kvem.toolbar.Main;import java.io.*;class emulator { public static void main(String[] args) { String thisLine; try { BufferedReader in = new BufferedReader(new FileReader("property.txt")); while ((thisLine = in.readLine()) != null) { System.out.println(thisLine); String[] ar = new String[1]; ar[0] = thisLine; Main.main(ar); } } catch (IOException e) { System.err.println("Error: " + e); } }} 线程的问题 jpanel设置大小问题,谢谢 JAVA Canvas画布不画的图形会自动消失,是什么原因,怎样让它不消失? 一个算法问题? 一道简单的递归实现题,希望高手指点 找不到jar包 新手求助一个简单问题!在线等! netbeans 生成主项目失败 -- 谁能帮我解析一下 小弟刚学java socket,请教个关于发送list的问题 关于IBM网站http://www-900.ibm.com/developerWorks/index.shtml *******问个关于String的小问题 有关服务器,SSL服务,求教于各位有识之士!!!!!!
http://community.csdn.net/Expert/topic/3769/3769180.xml?temp=.6164057这个帖子的Emulator class就是上述帖子里的com.sun.kvem.toolbar.Main class,下面是我反编译Main.class后部分代码:
------------------------------------
package com.sun.kvem.toolbar;import com.sun.kvem.environment.JavaVersionTester;
import com.sun.kvem.util.ToolkitResources;
import com.sun.kvem.util.WindowUtils;
import java.io.PrintStream;
import java.util.Properties;
import java.util.Vector;
import javax.swing.JOptionPane;public class Main
{
/* member class not found */
class SplashWindow {} public Main()
{
} public int run(String as[])
{
as = processArgs(as, 0);
WindowUtils.setLookAndFeel();
MainWindow mainwindow = new MainWindow();
mainwindow.run();
sw.setVisible(false);
sw.dispose();
return 0;
} public static boolean checkVMVersion()
{ ...
} public static void main(String args[])
{
if(!checkVMVersion())
System.exit(1);
sw = new SplashWindow(null);
(new Main()).run(args);
} private static String[] processArgs(String as[], int i)
{
Vector vector = new Vector();
for(int j = i; j < as.length; j++)
{
String s = as[j];
if(s.startsWith("-D") && s.indexOf("=") != -1)
{
String s1 = s.substring(2);
int k = s1.indexOf("=");
String s2 = s1.substring(0, k);
String s3 = s1.substring(k + 1);
System.getProperties().put(s2, s3);
} else
{
vector.add(s);
}
} String as1[] = new String[vector.size()];
vector.copyInto(as1);
return as1;
} private static SplashWindow sw;
}
-------------------------------
注:我并非想盗版其他公司的emulator的版权,只是想构建个测试J2ME的测试平台,用于学术研究。XHYJ
import com.sun.kvem.toolbar.Main;class emulator {
public static void main(String[] args) {
String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin";
String[] args = new String[1];
args[0] = s;
Main.main(args);
}
}
--------------------编译出错信息--------------------
C:\myprj\test3\emulator.java:5: illegal escape character
String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin";
^
C:\myprj\test3\emulator.java:5: illegal escape character
String s = "-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin";
^---------修改后源码-----------
import com.sun.kvem.toolbar.Main;class emulator {
public static void main(String[] args) {
String s = "-Dkvem.home";
String[] args = new String[1];
args[0] = s;
Main.main(args);
}
}
---------编译出错信息----------
C:\myprj\test3\emulator.java:6: args is already defined in main(java.lang.String[])
String[] args = new String[1];
import com.sun.kvem.toolbar.Main;class emulator {
public static void main(String[] args) {
String s = "-Dkvem.home";
String[] as = new String[1];
as[0] = s;
Main.main(as);
}
}
import com.sun.kvem.toolbar.Main;
class emulator {
public static void main(String[] args) {
String s = "-Dkvem.home=C:\WTK22";
String[] ar = new String[1];
ar[0] = s;
Main.main(ar);
}
}
---------编译出错信息----------
C:\myprj\test3\emulator.java:5: illegal escape character
String s = "-Dkvem.home=C:\WTK22";
^
1 error
各位有否类似经历?
String s = "-Dkvem.home=C:\\WTK22";
我确信已经将-Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false 传递给了com.sun.kvem.toolbar.Main 的main函数,而且import了所有的jar文件。请问各位:用java命令行执行中 -Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false 这些参数是传递给JVM的,还是传递给com.sun.kvem.toolbar.Main的main method的?C:\J2SDK1~1.2_0\bin\java.exe -Dkvem.home=C:\WTK22 -Djava.library.path=C:\WTK22/bin -Dsun.java2d.ddlock=true -Dsun.java2d.gdiblit=false -cp C:\WTK22/wtklib/kenv.zip;C:\WTK22/wtklib/ktools.zip com.sun.kvem.toolbar.Main ----------我的源码-----------
import com.sun.kvem.toolbar.Main;
import java.io.*;class emulator {
public static void main(String[] args) {
String thisLine;
try {
BufferedReader in = new BufferedReader(new FileReader("property.txt"));
while ((thisLine = in.readLine()) != null) {
System.out.println(thisLine);
String[] ar = new String[1];
ar[0] = thisLine;
Main.main(ar);
}
}
catch (IOException e) {
System.err.println("Error: " + e);
}
}
}