Boa tarde amigo, estou criando uma aplicação java desktop na qual preciso abrir um pdf dentro da propria aplicação, tenho o seguinte código só que está dando o erro, quem puder me ajudar agradeço.
segue o erro:
Exception in thread “main” java.lang.NoClassDefFoundError: com/apple/mrj/MRJAboutHandler
at javaapplication23.ExibePDF.main(ExibePDF.java:29)
Caused by: java.lang.ClassNotFoundException: com.apple.mrj.MRJAboutHandler
at java.net.URLClassLoader$1.run(URLClassLoader.java:299)
at java.net.URLClassLoader$1.run(URLClassLoader.java:288)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:287)
at java.lang.ClassLoader.loadClass(ClassLoader.java:392)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:334)
at java.lang.ClassLoader.loadClass(ClassLoader.java:332)
… 1 more
Java Result: 1
Segue o código:
[code]import javax.swing.;
import java.io.;
import com.adobe.acrobat.;
import java.awt.;
public class ExibePDF{
public static void main(String args[]){
InputStream input;
Viewer viewer;
JFrame frame = new JFrame("Visualização de Arquivo PDF");
frame.setLayout(new BorderLayout());
try{
viewer = new Viewer();
frame.add(viewer, BorderLayout.CENTER);
input = new FileInputStream (new File("C:/Documents and Settings/Administrador/Desktop/teste.pdf"));
if(input != null){
ByteArrayOutputStream output = new ByteArrayOutputStream();
// set read buffer size
byte[] rb = new byte[1024];
int ch = 0;
while ((ch = input.read(rb)) != -1){
output.write(rb, 0, ch);
}
byte[] b = output.toByteArray();
input.close();
output.close();
viewer.setDocumentInputStream(new ByteArrayInputStream(b));
}
viewer.activate();
viewer.setProperty("Default_Page_Layout", "SinglePage");
viewer.setProperty("Default_Zoom_Type", "FitVisibleWidth");
viewer.setProperty("Default_Magnification", "100");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,
"Não foi possível abrir o arquivo!",
"Erro", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
}
Meu velho, pelo erro alguma dependencia da sua aplicação não esta sendo colocada no classpath no momento da execução.
que seria a classe MRJAboutHandler
Já tentou usar o
Desktop.open(File file)
Que tenta usar o leitor default do teu SO?
Bom dia amigos, seguinte eu utilizando
Desktop.open(File file)
ira abrir o pdf fora da aplicação correto ? preciso que abra dentro da propria aplicação, quanto ao usar o leitor default do meu SO você teria algum exemplo que como fazer isto ?
desde já agradeço a ajuda de todos, obrigado até mais…
[quote=Marcelo aguiar]Bom dia amigos, seguinte eu utilizando
Desktop.open(File file)
ira abrir o pdf fora da aplicação correto ? preciso que abra dentro da propria aplicação, quanto ao usar o leitor default do meu SO você teria algum exemplo que como fazer isto ?
desde já agradeço a ajuda de todos, obrigado até mais…[/quote]
Sim, vai abrir o pdf no leitor default do SO, como o adobe reader por exemplo.
É esse exemplo mesmo, só passar o teu File ali.
Desktop.open(File file)
Bom dia amigos, PROBLEMA RESOLVIDO, para quem estiver com o mesmo problema segue a solução, baixei o arquivo MRJToolkitStubs-1.0.jar adicionei ao meu classpath e problema resolvido, para que este código execute corretamente é necessario a utilização da api acrobat.
link para dowload do arquivo MRJToolkitStubs-1.0.jar:
http://forums.sun.com/thread.jspa?threadID=5414115
link para download da api acrobat:
Obrigado pela ajuda de todos, segue o código:
[code]import javax.swing.;
import java.io.;
import com.adobe.acrobat.;
import java.awt.;
public class ExibePDF{
public static void main(String args[]){
InputStream input;
Viewer viewer;
JFrame frame = new JFrame("Visualização de Arquivo PDF");
frame.setLayout(new BorderLayout());
try{
viewer = new Viewer();
frame.add(viewer, BorderLayout.CENTER);
input = new FileInputStream (new File("C:/Documents and Settings/Administrador/Desktop/teste.pdf"));
if(input != null){
ByteArrayOutputStream output = new ByteArrayOutputStream();
// set read buffer size
byte[] rb = new byte[1024];
int ch = 0;
while ((ch = input.read(rb)) != -1){
output.write(rb, 0, ch);
}
byte[] b = output.toByteArray();
input.close();
output.close();
viewer.setDocumentInputStream(new ByteArrayInputStream(b));
}
viewer.activate();
viewer.setProperty("Default_Page_Layout", "SinglePage");
viewer.setProperty("Default_Zoom_Type", "FitVisibleWidth");
viewer.setProperty("Default_Magnification", "100");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,
"Não foi possível abrir o arquivo!",
"Erro", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
}[/code]