Extern compile

26 отговора 1019 прегледа
#1

Extern compile

Здравейте !
описание :
имам на сайта поле <textarea></textarea> .
В него потребителя ще слага Java code.
Цел :
При натискане на бутон въпросния Java code трябва да се компилира в background,
и да разбера дали компилацията е била без грешка или има и грешки.
Ако разбера и каква е грешката ще е плюс ! Но това май го показва резултата
който го връща самия компилатор /javac/ . Каде да чета за това каккъв вид е резултата на компилатора ?

Въпрос :
Как да стане това ? Първо във файл ли трябва да запиша Java кода или може направо.
Многа ще съм благодарен на някаквя помощ тъй като нямам никакво време !!!

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #2

Re: Extern compile

Многа ще съм благодарен на някаквя помощ тъй като нямам никакво време !!!

Мисля съм закъснял да ти помогна затова няма смисъл да ти пиша как да стане.
Отиде ли коня в реката?

Отговор
в отговор на eфp. Лyk #3

Re: Extern compile

Коня е в реката , но още се държи ... има оше малко въздух !!!
Та няма да е лошо да му подадеш некоя сламка...

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #4

Re: Extern compile

Predlagam 2 podhoda:

1. S izpozlwane na external compiler. Zapiswash file .java i go kompilirash s javac kato puskash wynshen process. Tuka e pokazano kakwa e idejata i ima i malko code:
[линк]

(Tozi nachin e naj siguren otkym kompatibilnost)

2. Izpolwash wgraden compilator kato BeanShell. Imash string i go evaluirash i towa e. Tuka ima primer kak stawa:
[линк]

(Tozi method mozhe da kompilira i neshto koeto ne e standartna java, zashtoto beanshell ima extentions, a mozhe i da ne uspee da kompilira standartna Java, zashtoto beanshell ne poddyrzha wsichko)

Отговор
в отговор на eфp. Лyk #5

Re: Extern compile

ima i drugo, w tools.jar ima wytreshen compiler koito mojesh da izvikwash programno. AppServerite taka kompilirat stubowete i skeletoni i ejb-tata , po tyursi info za towa, toi e w edin sun-ski paket daje.

Отговор
в отговор на ches #6

Re: Extern compile

com.sun.tools.javac
[линк]

Отговор
в отговор на ches #7

Re: Extern compile

Направил съм следното :

com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();

String[] args = new String[] {"-d", System.getProperty("user.dir"),fileName};
int status = javac.compile(args);

Няма грешка, но нещо май не работи защото никаде невиждам да създава .class файлове !!!
Неможах да открия инфо за това какво връща " javac.compile(args) " . Един път ми връща 1 един път 2 .
Въобще не намерих документация за пакета " com.sun.tools.javac "
Ако някой може да ми даде нещо ... има една бира

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #9

Re: Extern compile

между другото тази нередност ще я оправят в шестицата .. ако имаш време да почакаш

уесно нема
Отговор
в отговор на идEoт #10

Re: Extern compile

еми ако 6-цата излезе до 2 седмици зна4и имам време да я 4акам !!!
А за коя нередност казва6

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на ches #11

Re: beer!

Еми да аз от тук съм гледал !!! Е те са показали някакъв начин за създаване на файл, но аз го сздавам по друг начин. Иначе другото е същото .
Трябва ли да сложа нещо в директорията на проекта в Tomcat или то този клас com.sun.tools.javac.Main си прави всичко.

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на eфp. Лyk #12

Re: Extern compile

До колкото разбирам това нестава , защото се създава клас " около " стринга който се опитвам да компилирам. Да готина идея ама моя стринг има структурата на една програма

package my;
import ....;
import ....;
public class myclass {
...... /methods/
main {}

i t.n.

е това всичкото немога да го сложа както е показано и да стане така :

import java.util.*;
import java.io.*;
import java.net.*;
//Import as many as you want, so user don't have to write fully qualified class names...

public class Dynamic {

public static String getResult() {
и тук да си сложа показаното по горе (което не е обикновен стринг)
}
public static void main(String[] args) {
System.out.println( getResult() );
}
}

.....или може

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #13

Re: Extern compile

Имам един чист .java файл ...

и изглежда че да се компилира не е много лесно !!!


Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #14

Re: Extern compile

[линк]

уесно нема
Отговор
в отговор на Valentino® #15

Re: Extern compile

Здрасти
можеш да пробваш да стартираш javac като отделен процес със Runtime.exec() и да гледаш връщания код. Това са основните на javac:
0 - компилацията е успешна
1 - грешка при компилация
2 - грешни опции, подадени на компилатора
ако искаш повече инфо, пусни javac с verbose и парсвай изхода

Отговор
в отговор на Tepмит #16

Re: Extern compile

Здравей...
Може6 ли да ми каже6 как да го направа това... ако ми даде6 от каде да гледам много 6те съм ти благодарен. Ако може по скоро 4е времето ме притиска ... благодаря предварително

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #17

Re: Extern compile

Здрасти
ето един къс пример, то повече работа не му и трябва ;)

public class Compile {

public static void main (String[] args) throws Exception {

Runtime r = Runtime.getRuntime();
String javac = "/java/jdk1.4/bin/javac";
String clazz = "Test.java";
String []cmd = {javac, clazz};
Process p = r.exec(cmd);
p.waitFor();
int exitVal = p.exitValue();
switch (exitVal) {
case 0: System.out.println("Compile OK"); break;
case 1: System.out.println("Compile error!"); break;
case 2: /* should not happen - we start the compiler ;) */
}
}
}

Отговор
в отговор на Tepмит #18

Re: Extern compile

струва ми се че нещо бъркам пътя
String javac = "/java/jdk1.4/bin/javac"; - при този синтаксис каде е javac на харда.
Май тука бъркам. При мен е
C:\Program Files\Java\jdk1.5.0_02\bin\javac.exe - това как трябва да стане във стринга ???

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор
в отговор на Valentino® #19

Re: Extern compile

C:\\Program Files\\Java\\jdk1.5.0_02\\bin\\javac.exe

пробвай така

Отговор
в отговор на DrmR #20

Re: Extern compile

мерси така става.... обаче каквото и да компилирам все грешка "1" .
Аз подавам на компилатора масив от 2 елемента
1. път до компилатора
2. име та файла
Май компилатора вобще не компилира никакъв файл. Или как разбира каде съм записъл файла.
Файла ми се записва вав дефоут директорията на web server-a демек <%=System.getProperty("user.dir")%>
Та как да кажа на компилатора за файла.

thanks

Ако не беше последната секунда... никога нямаше да свършваме нищо
Отговор