首页 > 解决方案 > 从带有完整路径的cmd运行java类?

问题描述

我已经编译了一个java文件

javac XSDValidator.java

我得到一个 XSDValidator.class

可以说我有类(XSDValidatorc.class)文件

C:\xampp\htdocs\xsd_validtion

我在 cmd 中写了这个

C:\xampp\htdocs\xsd_validtion> java XSDValidator students.xsd students.xml

它工作正常。但是如果我在另一个目录中并且想要使用绝对路径运行文件,它就不起作用。为什么它不起作用?

精简版,假设我在目录中

C:\aaa\User\Document

像这样写它是行不通的。

java C:\xampp\htdocs\xsd_validtion\XSDValidator C:\xampp\htdocs\xsd_validtion\students.xsd C:\xampp\htdocs\xsd_validtion\students.xml

这是java文件

https://www.tutorialspoint.com/xsd/xsd_validation.htm
import java.io.File;
import java.io.IOException;

import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;

import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.xml.sax.SAXException;

public class XSDValidator {
   public static void main(String[] args) {
      if(args.length !=2){
         System.out.println("Usage : XSDValidator <file-name.xsd> <file-name.xml>" );
      } else {
         boolean isValid = validateXMLSchema(args[0],args[1]);

         if(isValid){
            System.out.println(args[1] + " is valid against " + args[0]);
         } else {
            System.out.println(args[1] + " is not valid against " + args[0]);
         }
      }
   }

   public static boolean validateXMLSchema(String xsdPath, String xmlPath){
      try {
         SchemaFactory factory =
            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            Schema schema = factory.newSchema(new File(xsdPath));
            Validator validator = schema.newValidator();
            validator.validate(new StreamSource(new File(xmlPath)));
      } catch (IOException e){
         System.out.println("Exception: "+e.getMessage());
         return false;
      }catch(SAXException e1){
         System.out.println("SAX Exception: "+e1.getMessage());
         return false;
      }

      return true;

   }
}

标签: javacmd

解决方案


使用 java 类路径:

java -cp C:\xampp\htdocs\xsd_validtion\ XSDValidator C:\xampp\htdocs\xsd_validtion\students.xsd C:\xampp\htdocs\xsd_validtion\students.xml

这包括类文件所在的目录到类路径。

java中的目录是包结构。这就是为什么您不能将其用作普通路径的原因


推荐阅读