mirror of
https://codeberg.org/qg-info-unterricht/zpg-graphentester.git
synced 2026-03-25 04:58:24 +01:00
First Commit (Fobi)
This commit is contained in:
commit
2bff291a51
336 changed files with 88781 additions and 0 deletions
53
control/MyClassLoader.java
Normal file
53
control/MyClassLoader.java
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
package control;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Hilfsklasse, um Algorithmen-Classen dynamisch nachladen zu können und
|
||||
* aktualisierte Class-Dateien während der Laufzeit erneut laden zu können.
|
||||
*
|
||||
* @author Schaller (nach http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html)
|
||||
* @version 16.02.2021
|
||||
*/
|
||||
public class MyClassLoader extends ClassLoader{
|
||||
|
||||
public MyClassLoader(ClassLoader parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
public Class loadClass(String name) throws ClassNotFoundException {
|
||||
if(!name.contains("GraphAlgo_"))
|
||||
return super.loadClass(name);
|
||||
|
||||
try {
|
||||
|
||||
|
||||
URL myUrl = new URL("file:"+name.split(Pattern.quote("."))[0]+"/"+name.split(Pattern.quote("."))[1]+".class");
|
||||
URLConnection connection = myUrl.openConnection();
|
||||
InputStream input = connection.getInputStream();
|
||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||
int data = input.read();
|
||||
|
||||
while(data != -1){
|
||||
buffer.write(data);
|
||||
data = input.read();
|
||||
}
|
||||
|
||||
input.close();
|
||||
|
||||
byte[] classData = buffer.toByteArray();
|
||||
|
||||
return defineClass(name, classData, 0, classData.length);
|
||||
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue