Как Вы читаете изображение в Java, когда Toolkit.getDefaultToolkit () бросает AWTError?

Я взял код Dineshkumar и был изменен для правильной проверки файла XML:

import org.apache.log4j.Logger;

public class Myclass{

private static final Logger LOGGER = Logger.getLogger(Myclass.class);

/**
 * Validate XML file against Schemas XSD in pathEsquema directory
 * @param pathEsquema directory that contains XSD Schemas to validate
 * @param pathFileXML XML file to validate
 * @throws BusinessException if it throws any Exception
 */
public static void validarXML(String pathEsquema, String pathFileXML) 
	throws BusinessException{	
	String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
	String nameFileXSD = "file.xsd";
	String MY_SCHEMA1 = pathEsquema+nameFileXSD);
	ParserErrorHandler parserErrorHandler;
	try{
		SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA);
		
		Source [] source = { 
			new StreamSource(new File(MY_SCHEMA1))
			};
		Schema schemaGrammar = schemaFactory.newSchema(source);

		Validator schemaValidator = schemaGrammar.newValidator();
		schemaValidator.setErrorHandler(
			parserErrorHandler= new ParserErrorHandler());
		
		/** validate xml instance against the grammar. */
		File file = new File(pathFileXML);
		InputStream isS= new FileInputStream(file);
		Reader reader = new InputStreamReader(isS,"UTF-8");
		schemaValidator.validate(new StreamSource(reader));
		
		if(parserErrorHandler.getErrorHandler().isEmpty()&& 
			parserErrorHandler.getFatalErrorHandler().isEmpty()){
			if(!parserErrorHandler.getWarningHandler().isEmpty()){
				LOGGER.info(
				String.format("WARNING validate XML:[%s] Descripcion:[%s]",
					pathFileXML,parserErrorHandler.getWarningHandler()));
			}else{
				LOGGER.info(
				String.format("OK validate  XML:[%s]",
					pathFileXML));
			}
		}else{
			throw new BusinessException(
				String.format("Error validate  XML:[%s], FatalError:[%s], Error:[%s]",
				pathFileXML,
				parserErrorHandler.getFatalErrorHandler(),
				parserErrorHandler.getErrorHandler()));
		}		
	}
	catch(SAXParseException e){
		throw new BusinessException(String.format("Error validate XML:[%s], SAXParseException:[%s]",
			pathFileXML,e.getMessage()),e);
	}
	catch (SAXException e){
		throw new BusinessException(String.format("Error validate XML:[%s], SAXException:[%s]",
			pathFileXML,e.getMessage()),e);
	}
	catch (IOException e) {
		throw new BusinessException(String.format("Error validate XML:[%s], 
			IOException:[%s]",pathFileXML,e.getMessage()),e);
	}
	
}

}

6
задан Chris Carruthers 23 September 2008 в 08:33
поделиться

3 ответа

Я считал использование изображений ImageIO.

Image i = ImageIO.read(InputStream in);

javadoc предложит больше информации также.

6
ответ дан 16 December 2019 в 21:48
поделиться

В некоторых системах, добавляющих "-Djava.awt.headless=true", поскольку, параметр Java может помочь.

0
ответ дан 16 December 2019 в 21:48
поделиться

Существует несколько статических методов в ImageIO, которые позволяют читать изображения из других источников. Самые интересные в Вашем случае:

BufferedImage read(ImageInputStream stream) 
BufferedImage read(File input)
BufferedImage read(InputStream input)

Я проверил внутри в код. Это использует абстрактный класс ImageReader, и существует три конструктора: JPEGReader. PNGReader и GIFReader. Эти классы и BufferedImage не используют собственных методов, по-видимому, таким образом, он должен всегда работать.

Кажется, что AWTError, который Вы имеете, - то, потому что Вы выполняете Java в бездисплейной конфигурации, или что инструментарий окон имеет некоторую проблему. Не смотря на определенную ошибку твердо сказать все же. Это решение позволит Вам читать изображение (вероятно), но в зависимости от того, что Вы хотите сделать с ним, AWTError мог бы быть брошен позже, поскольку Вы пытаетесь отобразить его.

2
ответ дан 16 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: