Java <;终止>;用法:文件名错误

Java <;终止>;用法:文件名错误,java,xml,xml-parsing,Java,Xml,Xml Parsing,下面是应该能够在Elipse上运行的正确代码。但是,我收到了一条错误消息,上面写着:“CreatedBibData[Java应用程序]用法:CreateBibData文件名” import java.io.*; 导入java.net。*; 导入org.xml.sax.*; 导入oracle.xml.parser.v2.SAXParser; 公共类CreateBibData扩展HandlerBase{ 遇到字符串元素; 字符串journalName,journalCode,vol,num, 起始页

下面是应该能够在Elipse上运行的正确代码。但是,我收到了一条错误消息,上面写着:“CreatedBibData[Java应用程序]用法:CreateBibData文件名”

import java.io.*;
导入java.net。*;
导入org.xml.sax.*;
导入oracle.xml.parser.v2.SAXParser;
公共类CreateBibData扩展HandlerBase{
遇到字符串元素;
字符串journalName,journalCode,vol,num,
起始页、结束页、标题;
字符串authorNames[];
int numRows;
内努马索斯;
静态公共void main(字符串[]argv){
试一试{
如果(argv.length!=1){
//必须传入XML文件的名称。
System.err.println(“用法:createbibdatafilename”);
系统出口(1);
}
//为解析器创建一个新的处理程序
CreateBibData createData=新建CreateBibData();
//获取解析器的实例
Parser Parser=新的SAXParser();
//在解析器中设置处理程序
setDocumentHandler(createData);
setErrorHandler(createData);
//将文件转换为URL并解析
试一试{
parser.parse(createURL(argv[0]).toString();
}捕获(SAXE异常){
System.out.println(e.getMessage());
}
捕获(SAXE异常){
System.out.println(e.getMessage());
}  
}捕获(例外e){
System.out.println(例如toString());
}
}
公开作废开始文件(){
System.out.println(“--SQL插入语句的开始”);
authorNames=新字符串[20];
numRows=0;
}
public void endDocument()引发异常{
System.out.println(“--End of SQL Insert语句”);
System.out.println(“刚生成”+numRows+
“SQL插入语句”);
}
公共无效startElement(字符串名称、属性列表附件)
抛出SAX异常{
ElementConferenced=名称;
如果(名称等于(“作者”)){
numAuthors=0;
}
}
public void endElement(字符串名称)引发异常{
如果(名称等于(“条款”)){
字符串辅助=日志代码+”:“+vol+”:“+num+”:“+startPage;
System.out.println(“插入到项目值(“”)+
aid+”、“+journalName+”、“+vol+”、“+num+”、”+
“起始页+”、“+endPage+”、“+title+”);”;
numRows++;
对于(int i=0;i从菜单转到运行->运行配置。然后在参数框中输入文件名的完整路径,然后单击“运行”按钮。如果文件位于项目的根级别,也可以简单地给出文件名

通过这样做,您将参数发送到
main
方法(该方法将
字符串[]
作为输入)


听起来代码不是你写的。如果你读了main()方法,您将知道,如果您没有只传递一个参数,程序将抛出该错误。是的,您是对的。代码不是我编写的,它会抛出一个异常。如何正确设置环境,使其不会抛出此异常?谢谢。我在下面添加了一个答案。在这个程序参数中,我认为应该将其放入xml文件中这与此程序有关。但是,我尝试了路径,它仍然会给我相同的异常消息。您可以创建跑步配置的屏幕截图并上载到吗?看起来不错,您单击了“跑步”按钮?如果文件不在该位置,您至少会看到不同的错误。这就是我现在遇到的错误:java.io.FileNotFoundException:C:\Users\dd\workspace\SAXProcessing\bib.xml(系统找不到指定的文件)好的。那么您可以将文件放在那个位置并重新运行程序吗?或者您可以将它放在其他位置(如C:)并在arguments窗口中给出完整的路径。
import java.io.*;
import java.net.*;
import org.xml.sax.*;
import oracle.xml.parser.v2.SAXParser;

public class CreateBibData extends HandlerBase {
  String elementEncountered;
  String journalName, journalCode, vol, num, 
         startPage, endPage, title; 
  String authorNames[];
  int numRows;
  int numAuthors;
  static public void main(String[] argv) {
    try {
      if (argv.length != 1) {
        // Must pass in the name of the XML file.
        System.err.println("Usage: CreateBibData filename");
        System.exit(1);
      }
      // Create a new handler for the parser
      CreateBibData createData = new CreateBibData();

      // Get an instance of the parser
      Parser parser = new SAXParser();

      // Set Handlers in the parser
      parser.setDocumentHandler(createData);
      parser.setErrorHandler(createData);

      // Convert file to URL and parse
      try {
        parser.parse(createURL(argv[0]).toString());
      } catch (SAXParseException e) {
          System.out.println(e.getMessage());
        }
        catch (SAXException e) {
          System.out.println(e.getMessage());
        }  
    } catch (Exception e) {
        System.out.println(e.toString());
    }
  }

  public void startDocument() {
    System.out.println("--Start of SQL Insert Statements");
    authorNames = new String[20];
    numRows=0;
  }

  public void endDocument() throws SAXException {
    System.out.println("--End of SQL Insert Statements");
    System.out.println("Just generated "+numRows+
                       " SQL insert statements");
  }

  public void startElement(String name, AttributeList atts) 
                   throws SAXException {
    elementEncountered = name;
    if (name.equals("Authors")) {
      numAuthors=0;
    }
  }

  public void endElement(String name) throws SAXException {
    if (name.equals("Article")) {
      String aid=journalCode+":"+vol+":"+num+":"+startPage;
      System.out.println("insert into articles values ('"+ 
          aid +"','" + journalName+"',"+ vol+","+ num+","+
          startPage+","+ endPage+",'"+ title+"');");
      numRows++;
      for (int i=0; i<numAuthors; i++) {
        System.out.println("insert into authors values('"+
            aid+"','"+authorNames[i]+"');");
        numRows++;
      }
      numAuthors=0;
    }
  }

  public void characters(char[] cbuf, int start, int len) {
    if (elementEncountered.equals("JournalName")) {
      journalName = new String(cbuf,start,len);
      int ii = journalName.indexOf("(");
      int jj = journalName.indexOf(")");
      journalCode=journalName.substring(ii+1,jj);
    }
    else if (elementEncountered.equals("Volume")) {
      vol=new String(cbuf,start,len);
    }
    else if (elementEncountered.equals("Number")) {
      num=new String(cbuf,start,len);
    }
    else if (elementEncountered.equals("Title")) {
      title=new String(cbuf,start,len);
    }
    else if (elementEncountered.equals("StartPage")) {
      startPage=new String(cbuf,start,len);
    }
    else if (elementEncountered.equals("EndPage")) {
      endPage=new String(cbuf,start,len);
    }
    else if (elementEncountered.equals("Title")) {
      title=new String(cbuf,start,len);
    }
    else if (elementEncountered.equals("Author")) {
      authorNames[numAuthors++]=new String(cbuf,start,len);
    }
   elementEncountered = "";
  }

  public void warning (SAXParseException e)
              throws SAXException {
    System.out.println("Warning:"+e.getMessage());
  }

  public void error (SAXParseException e)
              throws SAXException {
    throw new SAXException(e.getMessage());
  }

  public void fatalError (SAXParseException e)
              throws SAXException {
    System.out.println("Fatal error");
    throw new SAXException(e.getMessage());
  }

  static URL createURL(String fileName) {
    URL url = null;
    try {
      url = new URL(fileName);
    } catch (MalformedURLException ex) {
        File f = new File(fileName);
        try {
          String path = f.getAbsolutePath();
          String fs = System.getProperty("file.separator");
          if (fs.length() == 1) {
            char sep = fs.charAt(0);
            if (sep != '/')
              path = path.replace(sep, '/');
            if (path.charAt(0) != '/')
              path = '/' + path;
          }
          path = "file://" + path;
          url = new URL(path);
        } catch (MalformedURLException e) {
            System.out.println("Cannot create url for: "+ 
                               fileName);
            System.exit(0);
          }
      }
    return url;
  }
}