小弟写了一个需要接收参数的class,如:
class A{
public A(String para1,String para2,int para3){
....//接收参数;
}
method1(){}
public static void main(String[] args){
args=A(args[0],args[1],args[2]);
method1();
}
}
在另一个类测试,在其中的main方法中调用A.main(new String[]{para1,para2,para3});测试是可以得出结果的,但是我将A打包成jar后
在cmd中运行:
java -jar A.jar para1,para2,para3
却无法输出结果,并且报空指针异常;
各位大哥大姐路过·~给讲解下~~麻烦了~~
小弟在这里谢过先~~
class A{
public A(String para1,String para2,int para3){
....//接收参数;
}
method1(){}
public static void main(String[] args){
args=A(args[0],args[1],args[2]);
method1();
}
}
在另一个类测试,在其中的main方法中调用A.main(new String[]{para1,para2,para3});测试是可以得出结果的,但是我将A打包成jar后
在cmd中运行:
java -jar A.jar para1,para2,para3
却无法输出结果,并且报空指针异常;
各位大哥大姐路过·~给讲解下~~麻烦了~~
小弟在这里谢过先~~
解决方案 »
- java画面渐渐出现和消失效果
- 这个 JDK 程序 错了 求纠正!!!! 恳请高手们指点
- 请大家帮我看一下这个代码哪里有问题,谢谢
- 菜鸟问一个NCRE小问题
- 谁能帮我用SWT写一个简单的聊天程序!要源代码,功能说明在文章内容里写着呢!很急!
- J选择两个list中列的问题?高手回答,在线等~~~
- 请教关于通过url操作文件流的问题:)
- 请问能否用JAVA画出矢量图
- 如何import被打包进令一个jar中的jar中的类
- 大神求救呀 org.springframework.beans.factory.BeanDefinitionStoreException 这个异常怎么处理
- 请教一个问题
- 关于socket连接21端口
String[] 怎么能让A符值呢。编译都过不了
public A(String para1,String para2,String para3){
// ....//接收参数;
System.out.println(para1 + "/" + para2 + "/" + para3) ;
}
public static void main(String[] args){
new A(args[0],args[1],args[2]);
}
}
执行命令:java A para1 para2 para3用jar的执行命令:java -jar test.jar para1 para2 para3输出结果:para1/para2/para3
当初只是写的示例~~下面是全部代码的补完~~我想再请教下~~如果这个类还要对传进来的参数进行处理的话·是在哪里调用方法啊?是像下面那样调用吗?
public class A{
private static String a,b,c,d;
private static int n;
public A(String str1,String str2,String str3){
a=str1;
b=str2;
c=str3;
} public static void methord(){
n= Integer.parseInt(c)
d=a+"/"+b+"/"+(n*2);
System.out.println(d);
} public static void main(String[] args){
new A(args[0],args[1],args[2]);
//是在这里调用方法吗?
method();
}
}
因为传进去的参数有数字~~所以我在方法里用了 Integer.parseInt(c),将String转成int后便于计算,
有时候测试的时候会捕捉到格式异常。请问,这样的异常需不需要处理?
可是在debug的时候,执行到new A(args[0],args[1],args[2])的时候,却会出现数组下标越界的异常
而我直接打包,运行jar,则会出现空指针异常~~我也不知道这该怎么解决,麻烦路过的再指点一二;ps:开发工具我用的是netBeans 6.8,关于manifest.mf,是自动生成,我检查了下,主类配置是对的,
整个程序就这些,一个包一个带有main方法的类。
1,n= Integer.parseInt(c)
末尾加个 ; 先
2,public static void methord(){ 与 main方法中调用的方法名称不一致 method另外:
//是在这里调用方法吗?
method(); 在这里调用没错,不过建议,使用类名+方法名的方式进行调用,如:A.methord();
Eclipse是可以的,涉及到程序入口时传入的参数是否正确,如果不传是会报数组越界问题
private static String a,b,c,d;
private static int n;
public A(String str1,String str2,String str3){
a=str1;
b=str2;
c=str3;
} public static void methord(){
n= Integer.parseInt(c);
d=a+"/"+b+"/"+(n*2);
System.out.println(d);
} public static void main(String[] args){
new A(args[0],args[1],args[2]);
//是在这里调用方法吗?
methord();
}
}
LZ的问题:格式异常跟下标异常,都可以在new A(args[0],agrs[1],args[2])前面加上IF判断下避免掉这些异常,
public static void main(String[] args){
if(args.length<4){
if(args[2].match("[0-9]+"))
new A(args[0],args[1],args[2]);
//是在这里调用方法吗?
methord();
}
}至于直接运行JAR空指针的话,建议楼主要直接运行JAR就不要这么写了。可以这么写:
public static void main(String[] args){
InputStreamReader isr =new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String[] str=new String[3];
for(int i=0;i<str.length;i++){
try {
String s=br.readLine();
str[i]=s;
if(i==2)
while(!str[2].matches("[0-9]+")){
str[2]=br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
new A(args[0],args[1],args[2]);
methord();
}
}
new A(str[0],str[1],str[2]);
methord();
}
呵呵·~这两问题都是在写帖子的时候的手误·~ 最近在写fortran,所以总爱漏掉 ; 嘿嘿不过还是很感谢你啊·~让我明确了 方法调用的对的~~排除了一种错误的可能~~
可能·~~因为netbeans是直接编译源文件的,也就是说 这个时候没有给定参数
但是,为什么我在cmd里面运行的时候,却给我报空指针异常了·~~可能是我参数有问题吧·~~java -jar A.jar 这后面参数的分隔符是不是只能用空格啊?
还是说分号逗号都行~
有空隔隔开,不有逗号