當前位置:首頁 » 編程語言 » 動態編譯java

動態編譯java

發布時間: 2022-07-15 16:18:21

java動態編譯jar找不到

~/usr/share/java/mysql-connector-java.jar

找不到MYSQL的戲,就是說明上面的路徑不對。。。。。。。。。

㈡ Java代碼的靜態編譯和動態編譯中的問題是什麼

Java代碼正常是靜態編譯成位元組碼,由對應平台的JVM載入執行,靜態編譯無法動態擴展功能。動態編譯有兩種方式實現:

  1. 源碼編譯,需要調用Java Compiler,程序需要運行於JDK(而不是JRE)之上。

  2. 動態位元組碼生成技術(如CGLib、ASM)創建類。

動態編譯可以簡化代碼,增強類功能,但也帶來了代碼復雜度,線上不易維護。

㈢ 有關java動態編譯的問題

這個貌似要用到import util.Scanner吧

㈣ 有什麼動態編譯java源代碼的框架

可以的,我說說大概思路,很簡單,你自己具體實現吧,把代碼寫給你沒意義的:

  1. 將你這段字元串輸出到一個文件里,用Java類文件的方式命名。

  2. 2.調用外部javac命令將該文件編譯。

  3. 3.用類載入器(ClassLoad)動態載入新的class文件並用Class.forName()注冊該類,然後就可以正常使用了。

  4. 上面的每一步都能在中找到實現方法,自己發揮吧。

㈤ 在java代碼中實現動態編譯java文件

importjavax.tools.*;
importjava.io.*;
/**
*@authorhardneedl
*/
finalpublicclassMyCompile{

/**
*@paramargs命令行參數只有1個,即待編譯的源代碼文件的絕對路徑
*@throwsFileNotFoundException
*/
publicstaticvoidmain(String...args)throwsFileNotFoundException{

JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
intr=compiler.run(null,null,null,args[0]);
System.out.println(r==0?"成功":"失敗");
}

}

㈥ java怎麼利用動態編譯求四則運算式的結果貼代碼的最後注釋一下,免得我看不懂,求高手大神來回答

這種東西都不需要動態編譯,你用javax.script.ScriptEngine這玩意就可以了

具體代碼
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("javascript");
System.out.println(engine.eval("1+2*3+4^2-(2-8*0.12)+1-2^1/2+5/12-0.12/0.21"));

㈦ 怎麼動態編譯Java源文件

(Write once, run anywhere)」 的目標。Java類文件中包含的位元組代碼可以被不同平台上的JVM所使用。Java位元組代碼不僅可以以文件形式存在於磁碟上,也可以通過網路方式來下載,還可以只存在於內存中。JVM中的類載入器會負責從包含位元組代碼的位元組數組(byte[])中定義出Java類。在某些情況下,可能會需要動態的生成 Java位元組代碼,或是對已有的Java位元組代碼進行修改。這個時候就需要用到本文中將要介紹的相關技術。首先介紹一下如何動態編譯Java源文件。
動態編譯Java源文件
在一般情況下,開發人員都是在程序運行之前就編寫完成了全部的Java源代碼並且成功編譯。對有些應用來說,Java源代碼的內容在運行時刻才能確定。這個時候就需要動態編譯源代碼來生成Java位元組代碼,再由JVM來載入執行。典型的場景是很多演算法競賽的在線評測系統(如PKU JudgeOnline),允許用戶上傳Java代碼,由系統在後台編譯、運行並進行判定。在動態編譯Java源文件時,使用的做法是直接在程序中調用Java編譯器。
JSR 199引入了Java編譯器API。如果使用JDK 6的話,可以通過此API來動態編譯Java代碼。比如下面的代碼用來動態編譯最簡單的Hello World類。該Java類的代碼是保存在一個字元串中的。
publicclassCompilerTest{
publicstaticvoidmain(String[]args)throwsException{
Stringsource="publicclassMain{publicstaticvoidmain(String[]args){System.out.println(\"HelloWorld!\");}}";
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
=compiler.getStandardFileManager(null,null,null);
=newCompilerTest.StringSourceJavaObject("Main",source);
Iterable<extendsJavaFileObject>fileObjects=Arrays.asList(sourceObject);
CompilationTasktask=compiler.getTask(null,fileManager,null,null,null,fileObjects);
booleanresult=task.call();
if(result){

㈧ java動態編譯這個方法是不是過時了

首先,我幫你查了一下,找到一篇http://www.cnblogs.com/fangwenyu/archive/2011/10/12/2209051.html,你看看是不是跟你情況類似

其次,用ToolProvider不如直接用com.sun.tools.javac.Main.compile,你查查這個,一般動態執行java代碼的時候,網上的例子都是拿這個方法做的

㈨ 頁面上有個textarea,在裡面寫java代碼,然後如何動態編譯執行這段java代碼

後台獲取這段代碼之後,將其自動補全成一個java類。
然後將其用io生成為 .java文本文件
之後調用
Runtime.getRuntime().exec("x:/javac.exe xx.java ...") 編譯
最後使用反射或者代理調用這個類文件得到結果

㈩ Java里,重載的方法為何是靜態編譯,而沒有重載的方法卻是動態編譯這么設計有什麼原因嗎

java允許在一個類中,多個方法擁有相同的名字,但在名字相同的同時,必須有不同的參數,這就是重載,編譯器會根據實際情況挑選出正確的方法,如果編譯器找不到匹配的參數或者找出多個可能的匹配就會產生編譯時錯誤,這個過程被稱為重載的解析
1 普通方法的重載
普通方法的重載是Java實現多態技術的重要手段,為編程帶來了很多便利
當方法同名時,為了讓編譯器區別他們,至少需要下面之一不同
1 參數個數不同
2 對應位置上的參數類型不同
不允許參數完全相同而只是返回值不同的情況出現。無法進行編譯,程序在eclips中顯示錯誤
2 構造方法的重載
見文章構造方法的繼承
重載的解析
當類的設計者提供了重載方法之後,類的使用者在使用這些方法時編譯器需要確定調用哪一個方法,確定的唯一依據是參數列表,確定的過程被稱為重載的解析。

以下舉些例子說明:
show(int a ,int b,int c) //1
show(int a ,int b,double c) //2
show(int a ,double b,double c)//3
show(double a,double b,int c) //4
下面是調用
show(1,2,3);//1,2,3,4都是可行方法所有參數完全匹配1
show(1.0,2.0,3.0);//沒有一個可行方法
show(1.0,2,3);//4是最佳可行方法
show(1,2.0,3);//3,4都是可行方法,沒有最佳可行方法,報錯

重載和覆蓋都是多態的表現,他們在某些地方很相似,很容易引起初學者的疑惑,這里將它們之間的區別總結如下
1 重載和覆蓋的方法名稱都相同,但重載要求參數列表不同,而覆蓋要求參數列表完全相同。
2 重載對於方法前面的修飾符沒有限制,而覆蓋則對這些修飾符的使用有限制
3 重載時編譯器在編譯期間就可以確定調用那一個方法,而覆蓋則有可能在運行期間才能確定。

熱點內容
php獲取當前年 發布:2025-02-02 01:50:41 瀏覽:155
sqlbrowser服務 發布:2025-02-02 01:32:14 瀏覽:730
jeecg源碼下載 發布:2025-02-02 01:08:47 瀏覽:365
多台電腦能共用一個伺服器嗎 發布:2025-02-02 01:08:44 瀏覽:26
oppo雲存儲空間怎麼清理 發布:2025-02-02 00:59:31 瀏覽:263
項目編譯啥意思 發布:2025-02-02 00:25:13 瀏覽:223
逐鹿中原怎樣做掛機腳本 發布:2025-02-02 00:23:39 瀏覽:28
安卓系統跟蹤在哪裡 發布:2025-02-02 00:23:38 瀏覽:899
安卓uc瀏覽器怎麼安裝油猴 發布:2025-02-02 00:23:38 瀏覽:299
中商情報網資料庫 發布:2025-02-02 00:09:26 瀏覽:533