1 | !636 |
2 | !700 // ctex |
3 | |
4 | !include #2000470 // class _x16 |
5 | |
6 | main {
|
7 | psvm {
|
8 | Class<?> solver = compileAndLoadMainClass(loadSnippet("#695"));
|
9 | Object case = call(solver, "parse", "#1000386"); |
10 | call(solver, "calculate", case); |
11 | } |
12 | |
13 | static Object call(Object o, String method, Object... args) ctex {
|
14 | findMethod(o, method, args).invoke(o, args); |
15 | } |
16 | |
17 | static Method findMethod(Object o, String method, Object[] args) {
|
18 | // TODO: go to superclasses too |
19 | for (Method method : theClass.getMethods()) |
20 | if (method.getName().equals("main") && method.getParameterTypes().length == 1)
|
21 | return method; |
22 | throw new RuntimeException("Method 'main' with 1 parameter not found in " + theClass.getName());
|
23 | } |
24 | |
25 | // compile JavaX source and load main class |
26 | static Class<?> compileAndLoadMainClass(String src) tex {
|
27 | File srcDir = _x16.TempDirMaker_make(); |
28 | File classesDir = _x16.TempDirMaker_make(); |
29 | _x16.saveTextFile(new File(srcDir, "main.java").getPath(), src); |
30 | new List<File> libraries; |
31 | File transpiledDir = _x16.topLevelTranslate(srcDir, libraries); |
32 | String javacOutput = _x16.compileJava(transpiledDir, libraries, classesDir); |
33 | System.out.println(javacOutput); |
34 | URL[] urls = {classesDir.toURI().toURL()};
|
35 | |
36 | // make class loader |
37 | URLClassLoader classLoader = new URLClassLoader(urls); |
38 | |
39 | // load main class |
40 | Class<?> mainClass = classLoader.loadClass("main");
|
41 | return mainClass; |
42 | } |
43 | } |
Snippet is not live.
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
2 comment(s) hidden. show
| Snippet ID: | #2000479 |
| Snippet name: | Wiring runner |
| Eternal ID of this version: | #2000479/1 |
| Text MD5: | 8f3e5e9ff883f2bf3842874bd090152b |
| Author: | stefan |
| Category: | |
| Type: | New Tinybrain snippet |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2015-08-02 01:37:17 |
| Source code size: | 1495 bytes / 43 lines |
| Pitched / IR pitched: | No / Yes |
| Views / Downloads: | 1139 / 212 |
| Referenced in: | [show references] |