Здравствуйте, x01001, Вы писали:
X>Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.
X>В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.
X>Работаю под JBuilder 7
X>Tomcat-4.0.3
X>Подключаю к проекту нужные либы:
X>тоесть
X>xalan.jar
X>xml-apis.jar
X>xercesImpl.jar
X>Вот во время запуска проекта, вылетают два эксепшина:
X>javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError
X>и
X>java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError
X>
X>Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.
X>Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал
X>вот они:
X>X>...
X>...
X> StringWriter writer = new StringWriter();
X> try {
X> TransformerFactory tFactory = TransformerFactory.newInstance();
X> Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
X> transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
X> }
X> catch (TransformerException ex) {
X> }
X> catch (TransformerFactoryConfigurationError ex) {
X> }
X> Sysstem.out(writer.toString());
X>...
X>...
X>
X> ). Все работает!!!
X>Вот уже 3 день не могу понять в чем мой глюк, ПОМОГИТЕ КТО МОЖЕТ ПЛИЗ!
X>Код класса Kernel:
X>X>package forum.engine;
X>import forum.database.DBConnector;
X>import java.util.ArrayList;
X>import java.util.Iterator;
X>import forum.database.Category;
X>import forum.database.Forum;
X>import javax.xml.transform.TransformerFactory;
X>import javax.xml.transform.Transformer;
X>import javax.xml.transform.stream.StreamSource;
X>import javax.xml.transform.stream.StreamResult;
X>import java.io.*;
X>import javax.xml.transform.TransformerException;
X>import javax.xml.transform.TransformerFactoryConfigurationError;
X>import javax.xml.transform.ErrorListener;
X>import java.util.Properties;
X>public class Kernel {
X> private DBConnector connector = null;
X> public Kernel() {
X> connector = new DBConnector();
X> }
X> public synchronized String getHTML(){
X> String out = "........"; //Здесь XML контент
X> String xsl = "........"; //Здесь XSL контент
X> StringWriter writer = new StringWriter();
X> try {
X> TransformerFactory tFactory = TransformerFactory.newInstance();
X> Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
X> transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
X> }
X> catch (TransformerException ex) {
X> }catch (TransformerFactoryConfigurationError ex) {
X> }
X> return writer.toString();
X> }
X>}
X>
X>Код бина:
X>X>package forum.beans;
X>import forum.database.DBConnector;
X>import forum.database.User;
X>import java.util.ArrayList;
X>import forum.database.Category;
X>import forum.database.Forum;
X>import forum.database.Theme;
X>import forum.database.Message;
X>import forum.engine.Kernel;
X>import org.apache.xalan.xslt.EnvironmentCheck;
X>import java.io.PrintWriter;
X>import java.io.StringWriter;
X>public class indexBean {
X> private String text = "";
X> Kernel kernel = new Kernel();
X> public void setText(String text){
X> this.text = text;
X> }
X> public String getText(){
X> return kernel.getHTML();
X> }
X>}
X>
X>Код JSP:
X>X><%@ page contentType="text/html; charset=windows-1251" %>
X><html>
X><jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
X><jsp:setProperty name="indexBeanId" property="*" />
X><body>
X><jsp:getProperty name="indexBeanId" property="text" />
X></body>
X></html>
X>
Боюсь что проблемы с конфликтами ClassLoader's. Положи xml-jars в tomcat-home/common/lib (если их там еще нет)
Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.
В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.
Работаю под JBuilder 7
Tomcat-4.0.3
Подключаю к проекту нужные либы:
тоесть
xalan.jar
xml-apis.jar
xercesImpl.jar
Вот во время запуска проекта, вылетают два эксепшина:
javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError
и
java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError
Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.
Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал
вот они:
...
...
StringWriter writer = new StringWriter();
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
}
catch (TransformerException ex) {
}
catch (TransformerFactoryConfigurationError ex) {
}
Sysstem.out(writer.toString());
...
...
). Все работает!!!
Вот уже 3 день не могу понять в чем мой глюк, ПОМОГИТЕ КТО МОЖЕТ ПЛИЗ!
Код класса Kernel:
package forum.engine;
import forum.database.DBConnector;
import java.util.ArrayList;
import java.util.Iterator;
import forum.database.Category;
import forum.database.Forum;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.ErrorListener;
import java.util.Properties;
public class Kernel {
private DBConnector connector = null;
public Kernel() {
connector = new DBConnector();
}
public synchronized String getHTML(){
String out = "........"; //Здесь XML контент
String xsl = "........"; //Здесь XSL контент
StringWriter writer = new StringWriter();
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
}
catch (TransformerException ex) {
}catch (TransformerFactoryConfigurationError ex) {
}
return writer.toString();
}
}
Код бина:
package forum.beans;
import forum.database.DBConnector;
import forum.database.User;
import java.util.ArrayList;
import forum.database.Category;
import forum.database.Forum;
import forum.database.Theme;
import forum.database.Message;
import forum.engine.Kernel;
import org.apache.xalan.xslt.EnvironmentCheck;
import java.io.PrintWriter;
import java.io.StringWriter;
public class indexBean {
private String text = "";
Kernel kernel = new Kernel();
public void setText(String text){
this.text = text;
}
public String getText(){
return kernel.getHTML();
}
}
Код JSP:
<%@ page contentType="text/html; charset=windows-1251" %>
<html>
<jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
<jsp:setProperty name="indexBeanId" property="*" />
<body>
<jsp:getProperty name="indexBeanId" property="text" />
</body>
</html>
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, x01001, Вы писали:
X>>Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.
X>>В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.
X>>Работаю под JBuilder 7
X>>Tomcat-4.0.3
X>>Подключаю к проекту нужные либы:
X>>тоесть
X>>xalan.jar
X>>xml-apis.jar
X>>xercesImpl.jar
X>>Вот во время запуска проекта, вылетают два эксепшина:
X>>javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError
X>>и
X>>java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError
X>>
X>>Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.
X>>Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал
X>>вот они:
X>>X>>...
X>>...
X>> StringWriter writer = new StringWriter();
X>> try {
X>> TransformerFactory tFactory = TransformerFactory.newInstance();
X>> Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
X>> transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
X>> }
X>> catch (TransformerException ex) {
X>> }
X>> catch (TransformerFactoryConfigurationError ex) {
X>> }
X>> Sysstem.out(writer.toString());
X>>...
X>>...
X>>
X>> ). Все работает!!!
X>>Вот уже 3 день не могу понять в чем мой глюк, ПОМОГИТЕ КТО МОЖЕТ ПЛИЗ!
X>>Код класса Kernel:
X>>X>>package forum.engine;
X>>import forum.database.DBConnector;
X>>import java.util.ArrayList;
X>>import java.util.Iterator;
X>>import forum.database.Category;
X>>import forum.database.Forum;
X>>import javax.xml.transform.TransformerFactory;
X>>import javax.xml.transform.Transformer;
X>>import javax.xml.transform.stream.StreamSource;
X>>import javax.xml.transform.stream.StreamResult;
X>>import java.io.*;
X>>import javax.xml.transform.TransformerException;
X>>import javax.xml.transform.TransformerFactoryConfigurationError;
X>>import javax.xml.transform.ErrorListener;
X>>import java.util.Properties;
X>>public class Kernel {
X>> private DBConnector connector = null;
X>> public Kernel() {
X>> connector = new DBConnector();
X>> }
X>> public synchronized String getHTML(){
X>> String out = "........"; //Здесь XML контент
X>> String xsl = "........"; //Здесь XSL контент
X>> StringWriter writer = new StringWriter();
X>> try {
X>> TransformerFactory tFactory = TransformerFactory.newInstance();
X>> Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
X>> transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
X>> }
X>> catch (TransformerException ex) {
X>> }catch (TransformerFactoryConfigurationError ex) {
X>> }
X>> return writer.toString();
X>> }
X>>}
X>>
X>>Код бина:
X>>X>>package forum.beans;
X>>import forum.database.DBConnector;
X>>import forum.database.User;
X>>import java.util.ArrayList;
X>>import forum.database.Category;
X>>import forum.database.Forum;
X>>import forum.database.Theme;
X>>import forum.database.Message;
X>>import forum.engine.Kernel;
X>>import org.apache.xalan.xslt.EnvironmentCheck;
X>>import java.io.PrintWriter;
X>>import java.io.StringWriter;
X>>public class indexBean {
X>> private String text = "";
X>> Kernel kernel = new Kernel();
X>> public void setText(String text){
X>> this.text = text;
X>> }
X>> public String getText(){
X>> return kernel.getHTML();
X>> }
X>>}
X>>
X>>Код JSP:
X>>X>><%@ page contentType="text/html; charset=windows-1251" %>
X>><html>
X>><jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
X>><jsp:setProperty name="indexBeanId" property="*" />
X>><body>
X>><jsp:getProperty name="indexBeanId" property="text" />
X>></body>
X>></html>
X>>
L>Боюсь что проблемы с конфликтами ClassLoader's. Положи xml-jars в tomcat-home/common/lib (если их там еще нет)
Вообще JBuilder не использовал, но если томкат пускается из него то надо настроить проект так, что бы нужные либы были подключены к проекту только при компиляции и редактировании (что-бы среда не ругалась на неизвестные классы). На этапе выполнения эти либы не должны быть доступны напрямую из класслоадера твоего веб-приложения (т.е. при деплое на томкат они не должны лежать в web-inf/lib).