生成了两个类,把生成的class文件,放在一个特定的目录下,在命令行中执行都没有问题。
但是项目的需要是只能有一个类,用户只需要点一次回车。所以在A类中放入了B类的执行代码,比如java -classpath ../xx.jar xx,但是执行的时候,当前目录默认是在系统目录下的,但是里面用到了相对路径“..”,所以执行失败!
后来我都把它改成了绝对路径,还是失败!郁闷啊!我现在急需的就是java命令行下的某个命令,这个命令可以使.class默认的执行路径是自己指定的那个目录,请大家帮忙!
谢谢大家了!

解决方案 »

  1.   

    试试 set classpath=自己指定的那个目录路径
    比如在命令行下输入:
    set classpath=D:\JBProject
      

  2.   

    问题关键在于设置使用java的exec方法设置默认目录,有知道的帮帮忙吧。
      

  3.   

    编译器找类是根据CLASSPATH的,可以在系统的环境变量中的那个CLASSPATH后添加几个路径
    比如classpath=c:\abc;c:\def;c:\ghi,中间用分号隔开
    还有一种情况就是如果你的A,B类都含有main(),可能需要明确指明执行哪个类才行
    比如java A 或者java B,当然,CLASSPATH还是得能找到A,B
      

  4.   

    不明白你具体的问题,不过显式的执行java带路径命令是
    java -classpath c:\abc A;(假设A.class是在c:\abc下,且A.class包括main())
      

  5.   

    我现在的问题是A和B两个类,编译之后是A.class和B.class,A的执行是java -classpath C:/xx.jar A,在任何路径进入都可以执行,因为它需要的.jar我用绝对路径表示了。但是B类的执行要用的.jar我必须要用相对路径表示,所以B类的执行就是进入命令行,到一个特定的目录下,用java -classpath ../xx.jar B ./aa.xml来执行了,“..”表示当前目录的上一级目录,“.”表示当前目录。xx.jar是B执行所需要的.jar,aa.xml是B执行所需要的参数。但是现在我要求做到的是把两个类的执行放在一起,就是通过运行一次java xxx作完所有的事情。所以我在A类的代码里调用了B,就是把以前在命令行里执行B所需要的命令作为子进程在A里执行了。所以我把这个修改后的A.class放在一个目录里,用以前的java -classpath C:/xx.jar A执行后,只能执行完以前A的部分,以前B的部分没有被执行,因为java命令默认的路径是系统目录,".."和"."都不能识别了。所以我现在最需要的是在执行B的命令前必须要先设定那个目录作为执行B所需要的那个目录。
    就是需要一个这样的命令,大家可以帮我吗?
    我明天去公司试验一下。
      

  6.   

    我觉得java里面应该有类似的方法直接调用其它jar或者.class文件里面的方法。比如Eclipse的插件,Eclipse能够自动识别并且执行里面的代码。
      

  7.   

    我们当然知道"."就是当前路径,楼上大哥没看明白我的具体问题。问题已经解决,用:
    public Process exec(String[] cmdarray,
                        String[] envp,
                        File dir)
                 throws IOException
    Executes the specified command and arguments in a separate process with the specified environment and working directory. 
    看来java还没有那么土,jdk的帮助文件还应该多看看……