Se o JAR estiver no seu CLASSPATH (ou seja, se você der um Class.forName e conseguir obter a classe), então basta listar o conteúdo do Jar. Vou dar um exemplo depois.
fabioebner
entao cara eu sei o diretorio q esta o jar… e o nome do jar
T
thingol
importjava.awt.Rectangle;importjava.io.IOException;importjava.util.Collections;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.SwingUtilities;importjavax.swing.JLabel;publicclassListarJarextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJTextAreatxaClasses=null;privateJButtonbtnProcessar=null;privateJTextFieldtxtNomeJar=null;privateJScrollPanejScrollPane=null;privateJLabeljLabel=null;/** * This method initializes txaClasses * * @return javax.swing.JTextArea */privateJTextAreagetTxaClasses(){if(txaClasses==null){txaClasses=newJTextArea();txaClasses.setEditable(false);}returntxaClasses;}/** * This method initializes btnProcessar * * @return javax.swing.JButton */privateJButtongetBtnProcessar(){if(btnProcessar==null){btnProcessar=newJButton();btnProcessar.setBounds(newRectangle(15,240,106,31));btnProcessar.setText("Processar!");btnProcessar.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){processar();}});}returnbtnProcessar;}/** * This method initializes txtNomeJar * * @return javax.swing.JTextField */privateJTextFieldgetTxtNomeJar(){if(txtNomeJar==null){txtNomeJar=newJTextField();txtNomeJar.setBounds(newRectangle(15,195,391,31));}returntxtNomeJar;}/** * This method initializes jScrollPane * * @return javax.swing.JScrollPane */privateJScrollPanegetJScrollPane(){if(jScrollPane==null){jScrollPane=newJScrollPane();jScrollPane.setBounds(newRectangle(15,5,391,161));jScrollPane.setViewportView(getTxaClasses());}returnjScrollPane;}/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){ListarJarthisClass=newListarJar();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}/** * This is the default constructor */publicListarJar(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(443,312);this.setContentPane(getJContentPane());this.setTitle("JFrame");this.getRootPane().setDefaultButton(btnProcessar);}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){jLabel=newJLabel();jLabel.setBounds(newRectangle(22,175,384,14));jLabel.setText("Digite abaixo o nome do arquivo .jar, e clique em Processar:");jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(getJScrollPane(),null);jContentPane.add(getBtnProcessar(),null);jContentPane.add(jLabel,null);jContentPane.add(getTxtNomeJar(),null);}returnjContentPane;}publicvoidprocessar(){try{ZipFilezf=newZipFile(txtNomeJar.getText());for(ZipEntryze:Collections.list(zf.entries())){if(!ze.isDirectory()){if(ze.getName().endsWith(".class")){StringclassName=ze.getName().replace('/','.').substring(0,ze.getName().length()-6);txaClasses.setText(txaClasses.getText()+className+"\n");}}}}catch(IOExceptione){showStackTrace(e);}}privatevoidshowStackTrace(Throwablethr){StringBuildermsg=newStringBuilder();for(StackTraceElementste:thr.getStackTrace()){msg.append(ste.toString()).append("\n");}JOptionPane.showMessageDialog(this,msg,"Erro!",JOptionPane.ERROR_MESSAGE);}}// @jve:decl-index=0:visual-constraint="10,10"
fabioebner
ae mlkao ficou classe A… agora tem uma coisa. eu fiz o seguinte: