Hallo,
Ik ben bezig met een programma dat zichzelf kan uitbreiden. Dat wil zeggen als ik een nieuwe .class file in een directory zet dat hij dit commando dan kent (het command pattern).
Ik heb 1 commando gemaakt 1 interface gemaakt en een main applicatie
Interface Commando.java
Het commando Echo.java
main applicatie Serv.java
Als ik Commando exec uit main in een try catch zet (zoals nu) dan krijg ik als foutmelding null.
Als ik try catch weg haal krijg ik de foutmelding
Exception in thread "main"java.lang.instantiationException
at sun.reflect.InstantiationExceptionConstructorAccorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.class.newInstance0(Unknown Source)
at java.lang.class.newInstance(Unknown Source)
at server.Serv.main(Serv.java51)
Ik ben bezig met een programma dat zichzelf kan uitbreiden. Dat wil zeggen als ik een nieuwe .class file in een directory zet dat hij dit commando dan kent (het command pattern).
Ik heb 1 commando gemaakt 1 interface gemaakt en een main applicatie
Interface Commando.java
code:
1
2
3
4
5
6
| package server.commands;
public interface Commando
{
public void run();
} |
Het commando Echo.java
code:
1
2
3
4
5
6
7
8
9
| package server.commands
public abstract class Echo implements Commando
{
public void run()
{
System.out.println("test");
}
} |
main applicatie Serv.java
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| package server;
public class Serv
{
public static void main(String args[]) throws InstantiationException, IllegalAccesException,ClassNotFoundException
{
String test = "server.commands.Echo";
try
{
Commando exec = (Commando)Class.forName(test).newInstance();
}
catch(InstantiationException s)
{
System.out.println("" + s.getMessage());
}
}
} |
Als ik Commando exec uit main in een try catch zet (zoals nu) dan krijg ik als foutmelding null.
Als ik try catch weg haal krijg ik de foutmelding
Exception in thread "main"java.lang.instantiationException
at sun.reflect.InstantiationExceptionConstructorAccorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.class.newInstance0(Unknown Source)
at java.lang.class.newInstance(Unknown Source)
at server.Serv.main(Serv.java51)