public static void main(String[] args) throws UnsupportedEncodingException {
String path=System.getProperty("user.dir") + File.separator + "configsdd"+File.separator;
System.out.println(path);
compileFile(path,"abcdd.java");
}
public static int compileFile(String path, String fileName) {
System.out.println(path);
String[] test = new String[] { "-d", path, fileName };
System.out.println(test.toString());
int status = Main.compile(test);
return status;
}第一次编译的时候我用的是a.java名字(貌似是这样的),我再改名字的话(如:abcdd.java)就提示找不到abcdd.java文件。只有a.java行。求高手解决。

解决方案 »

  1.   

    随便问一下谁有tool.jar的源码,
      

  2.   

    一个源文件可以有多个类,但是只有一个类是public的,源文件的名字是这个public类的类名加上(.java)
      

  3.   

    文件名和public类的名字需要一致,这是龟腚。
      

  4.   

    我知道public的类的文件,文件名得的类名相同,可我现在是编译另一个java文件的,它的名字叫abcdd.java,现在文件名和路径都对,控制台提示找不到文件abcdd.java。如果把文件abcdd.java改成a.java就行了,不知道什么原因。
      

  5.   

    楼主不把所报异常全部贴出来,别人不好找问题原因。
    在这里,我把我所理解的简单写一下。
    JVM的编译机制是先找到.java 这个文件进行编译成.class 二进制文件,然后进行连接,初始化。
    楼主没有找到.java 这个文件 ,有几个原因:首先检查系统加载器加载的路径是否正确,也就是在你的路径下面有没有这个Java文件。其次如果路径对了,文件名也对了,看看Java文件里面,所对应的公共类名是不是正确。如果都没有问题,建议楼主检查检查自己的代码 是不是有问题。
      

  6.   

    提醒的是,我得把异常代码贴出来
    =======================================================F:\workspace\test\configsdd\
    F:\workspace\test\configsdd\
    [Ljava.lang.String;@de6ced
    javac: 找不到文件: abcdd.java
    用法: javac <options> <source files>
    -help 用于列出可能的选项
      

  7.   

    改成 a.java后  http://hiphotos.baidu.com/ling%C1%E8yue%D4%C2/abpic/item/d2760937db079f7f0b55a9f8.jpg
      

  8.   

    java文件名必须和里面的public类名一致
      

  9.   

    跟写入某个缓存似的,如果将要编译的目标文件改回a.java。就会提示java文件出错
    --------------------------------------------------------------------
    F:\workspace\test\configsdd\
    F:\workspace\test\configsdd\
    [Ljava.lang.String;@de6ced
    a.java:5: 找不到符号
    符号: 类 IProcessData
    位置: 软件包 dttool.expansion
    import dttool.expansion.IProcessData;
                           ^
    a.java:7: 找不到符号
    符号: 类 IProcessData
    class ProcessData implements IProcessData{
                                 ^
    2 错误如果改变a.java的内容,结果还是上面这些
      

  10.   

    如果java文件的名称为AA.java,那么,该文件中public的类名必须也为AA,大小写也必须一样,否则编译时出错。例如AA.java文件中:public class AA{
        public static void main(String[] args){
            System.out.println("Hello AA");
        }
    }
      

  11.   

    我是用tools jar包中的Main.compile这个函数 去编译项目下的文件的(动态编译),提示找不到文件,根本不是类名和文件名不一致。 
      

  12.   

    我把abcdd.java拷到根项目的根目录下,改一下路径(改为:System.getProperty("user.dir") + File.separator),能通过了,再拷到configsdd目录下又行了,真郁闷。不知道怎么回事??、