java - javax.tools.JavaCompiler Setting up classpath -


im trying write scripting system minecraft spigot plugin , im not quite sure on how give scripts information main jar file.

with current code compile script fine give me error on line "3" of compass.java file (the class declaration). see program doesnt know "com.deft.core.scripts.deftscript" , im not quite sure on how tell information.

i got compiling code this thread if relevant

compiling script:

    diagnosticcollector<javafileobject> diagnostics = new diagnosticcollector<javafileobject>();     javacompiler compiler = toolprovider.getsystemjavacompiler();     standardjavafilemanager filemanager = compiler.getstandardfilemanager(diagnostics, null, null);      list<string> optionlist = new arraylist<string>();     optionlist.add("-classpath");     optionlist.add(system.getproperty("java.class.path") + ";dist/deft-core.jar");       iterable<? extends javafileobject> compilationunit = filemanager.getjavafileobjectsfromfiles(arrays.aslist(script));     javacompiler.compilationtask task = compiler.gettask(null, filemanager, diagnostics, optionlist, null, compilationunit);     if (task.call()) {         object obj = null;         try {             urlclassloader classloader = new urlclassloader(new url[]{new file("./plugins/deft-core/").touri().tourl()});             class<?> loadedclass;             loadedclass = classloader.loadclass("scripts.compass");             obj = loadedclass.newinstance();         } catch (classnotfoundexception e) {             e.printstacktrace();         } catch (instantiationexception e) {             e.printstacktrace();         } catch (illegalaccessexception e) {             e.printstacktrace();         } catch (malformedurlexception e) {             e.printstacktrace();         }           if (obj instanceof deftscript) {             deftscript deftscript = (deftscript)obj;             deftscript.onenable(this);         }     } else {         (diagnostic<? extends javafileobject> diagnostic : diagnostics.getdiagnostics()) {             system.out.format("error on line %d in %s%n", diagnostic.getlinenumber(), diagnostic.getsource().touri());         }     } 

compass.java

package scripts;  public class compass extends com.deft.core.scripts.deftscript {     @override     public void onenabled() {     } } 

deftscript.java

package com.deft.core.scripts;  public abstract class deftscript {     public abstract void onenable(); } 

with com.deft.core.scripts.deftscript being source im trying extend main jarfile.

im pretty sure problem lies somewhere within here:

list<string> optionlist = new arraylist<string>();     optionlist.add("-classpath");     optionlist.add(system.getproperty("java.class.path") + ";dist/deft-core.jar"); 

edit:

fixed problem setting class path. jar file in question location in location specified. switch out optionlist.add calls one

optionlist.addall(arrays.aslist("-classpath", system.getproperty("java.class.path") + ";./plugins/deft-core.jar")); 

all tho fixed initial question started causing new error. apon trying run newly compiled class file giving me error

java.lang.noclassdeffounderror: com/deft/core/scripts/deftscript     @ java.lang.classloader.defineclass1(native method) ~[?:1.8.0_45]     @ java.lang.classloader.defineclass(unknown source) ~[?:1.8.0_45]     @ java.security.secureclassloader.defineclass(unknown source) ~[?:1.8.0_45]     @ java.net.urlclassloader.defineclass(unknown source) ~[?:1.8.0_45]     @ java.net.urlclassloader.access$100(unknown source) ~[?:1.8.0_45]     @ java.net.urlclassloader$1.run(unknown source) ~[?:1.8.0_45]     @ java.net.urlclassloader$1.run(unknown source) ~[?:1.8.0_45]     @ java.security.accesscontroller.doprivileged(native method) ~[?:1.8.0_45]     @ java.net.urlclassloader.findclass(unknown source) ~[?:1.8.0_45]     @ java.lang.classloader.loadclass(unknown source) ~[?:1.8.0_45]     @ java.lang.classloader.loadclass(unknown source) ~[?:1.8.0_45]     @ com.deft.core.main.deftcore.onenable(deftcore.java:79) ~[?:?] 


Comments

Popular posts from this blog

How to provide Authorization & Authentication using Asp.net, C#? -

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

android - Pass an Serializable object in AIDL -