Fórum easy java magazine 2 - problemas #414477

23/03/2012

0

galera o codigo a seguir (eu modifiquei um pouco o que tava na revista)
FileFilter filtro = (new FileFilter(){
			
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
		
File[] classes = dir.listFiles(filtro);


roda, mas a lista vem vazia e o diretorio tem os arquivos... ajuda ae.. baixem o codigo do exemplo e testem por favor
desde ja, agradeço
Luiz Reinoso.

Luiz Reinoso.

Responder

Posts

23/03/2012

Luiz Reinoso.

galera o codigo a seguir (eu modifiquei um pouco o que tava na revista)
FileFilter filtro = (new FileFilter(){

@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});

File[] classes = dir.listFiles(filtro);

roda, mas a lista vem vazia e o diretorio tem os arquivos... ajuda ae.. baixem o codigo do exemplo e testem por favor (e a parte de Reflexão)
desde ja, agradeço
Responder

Gostei + 0

04/04/2012

Willes Reis

Você poderia mostrar como foi instanciado o objeto [File dir];
Este objeto precisa receber um caminho de diretório base para fazer a pesquisa e/ou filtro.
Responder

Gostei + 0

05/04/2012

Luiz Reinoso.

Você poderia mostrar como foi instanciado o objeto [File dir];
Este objeto precisa receber um caminho de diretório base para fazer a pesquisa e/ou filtro.


private void loadPlugins() throws Exception {

/* Acessa o diretório onde ficam os plugins */
File dir = new File(/plugins);

/* Listamos todos os arquivos de classes
* (filtra somente os arquivos com extensão .class)
*/
File[] classes = dir.listFiles(new FileFilter() {

@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
Responder

Gostei + 0

05/04/2012

Luiz Reinoso.

Você poderia mostrar como foi instanciado o objeto [File dir];
Este objeto precisa receber um caminho de diretório base para fazer a pesquisa e/ou filtro.


private void loadPlugins() throws Exception {

/* Acessa o diretório onde ficam os plugins */
File dir = new File(/plugins);

/* Listamos todos os arquivos de classes
* (filtra somente os arquivos com extensão .class)
*/
File[] classes = dir.listFiles(new FileFilter() {

@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});

cara ja passei parametro de tudo que é jeito!
Responder

Gostei + 0

05/04/2012

Luiz Reinoso.

aqui todo o codigo... fiz algumas coias.. mas nada..
package rEFLEXAO_APP;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileFilter;
import java.lang.reflect.Method;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class ReflectApp extends JFrame {

protected JMenu mainMenu = null;
protected JMenuBar menuBar = null;

protected JPanel mainPanel = null;

public ReflectApp() {
initComponents();
this.setSize(400, 300);
this.setTitle(Aplicação baseada em plugins);
this.setLocationRelativeTo(null);
this.setJMenuBar(menuBar);
}

public JPanel getMainPanel() {
return mainPanel;
}

private void initComponents() {
mainPanel = new JPanel();
mainMenu = new JMenu(Plugins);
menuBar = new JMenuBar();
menuBar.add(mainMenu);

this.setContentPane(mainPanel);

try {
loadPlugins();
} catch (Exception e) {
e.printStackTrace();
}
}

private void loadPlugins() throws Exception {

/* Acessa o diretório onde ficam os plugins */
File dir = new File(c://plugins);

/* Listamos todos os arquivos de classes
* (filtra somente os arquivos com extensão .class)
*/
File[] classes = dir.listFiles(new FileFilter() {

@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});

/*
* Varre todos os arquivos de classe encontrados, para montar o menu
*/
for (File file: classes) {

/* Pega o nome do arquivo */
String className = file.getPath();

/* Retira o .class do final do nome do arquivo */
className = className.substring(0, className.indexOf(.class));

/* Substitui o separador de arquivo (/ no Linux e \ no Windows)
* por um ., para montar o nome qualificado da classe
*/
className = className.replace(File.separatorChar, .);

/* Obtêm o Class pelo nome qualificado da classe */
Class clazz = Class.forName(className);

/* Cria uma nova instância da classe, e faz o cast para
* a nossa interface (Plugin)
*/
//final Object reference = clazz.newInstance();
final Plugin reference = (Plugin) clazz.newInstance();

/* Obtêm e invoca o método que configura o this como aplicação
* no nosso plugin
*/

//Method setApplication = clazz.getMethod(setApplication,
// new Class[]{ReflectApp.class});
//setApplication.invoke(reference, new Object[]);

reference.setApplication(this);

/* Obtêm e invoca o método que retorna o nome que irá para o menu */
//Method getMenuName = clazz.getMethod(getMenuLabel, null);
//String menuLabel = (String) getMenuName.invoke(reference, null);

String menuLabel = reference.getMenuLabel();

/* Obtêm o método que executará o plugin */
//final Method execute = clazz.getMethod(execute, null);

JMenuItem menuItem = new JMenuItem(menuLabel);

menuItem.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
/*
try {
execute.invoke(reference, null);
} catch (Exception ex) {
ex.printStackTrace();
}
*/
reference.execute();
}
});

mainMenu.add(menuItem);
}
}

public static void main(String[] args) {
ReflectApp app = new ReflectApp();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setVisible(true);
}
}
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar