/**
* 編譯字串源代碼,編譯失敗在diagnosticsCollector中獲取提示資訊
* @return true:編譯成功 false:編譯失敗
*/
public boolean compiler() {
//標準的內容管理器,更換成自己的實作,覆寫部分方法
StandardJavaFileManager standardFileManager = compiler.getStandardFileManager(diagnosticsCollector, null, null);
JavaFileManager javaFileManager = new StringJavaFileManage(standardFileManager);
//構造源代碼物件
JavaFileObject javaFileObject = new StringJavaFileObject(fullClassName, sourceCode);
//指定要加載類的目錄
List<String> options = new ArrayList<>();
options.add("-encoding");
options.add("UTF-8");
options.add("-classpath");
String classPath = CustomJavaCompilerUtils.class.getProtectionDomain().getCodeSource().getLocation().getPath();
try{
options.add(URLDecoder.decode(classPath, "UTF-8"));
} catch(Exception ex){}
//獲取一個編譯任務
JavaCompiler.CompilationTask task = compiler.getTask(null, javaFileManager, diagnosticsCollector, options, null, Arrays.asList(javaFileObject));
return task.call();
}
因為類里面參考了其他的類,本地運行沒問題,發布服務器就提示找不到,請教各位大神,有什么辦法解決,謝謝了?
uj5u.com熱心網友回復:
服務器需要考慮路徑和權限的問題。一般linux服務器路徑跟windows不一樣,而且有些檔案需要手工chmod授權才行。而且字符集可能也不同,會有亂碼之類的。uj5u.com熱心網友回復:
你確定回應的jar包服務器上都有,用什么打包發布的(maven?)。uj5u.com熱心網友回復:
樓主最后怎么解決的呢,遇到相同的問題了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232691.html
標籤:Web 開發
上一篇:Java kafka消費到資料后 發送到ftp服務器
下一篇:報錯Exception in thread "main" java.lang.Error: Unresolved compilation problem:
