Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java compiler API 
V
    Опции темы
Tony
Дата 1.2.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: нет
Всего: 12



Исползую compiler api. Можно комбилить класс не из файла а из массива байт?
Код

    JavaCompiler jc = ToolProvider.getSystemJavaCompiler();  
        StandardJavaFileManager sjfm = jc.getStandardFileManager(null, null, null); 
        File jFile = new File("myWork/Test.java");  
        Iterable fileObjects = sjfm.getJavaFileObjects(jFile);  
        System.out.println(jc.getTask(null, sjfm, null, null, null, fileObjects).call());  
        try{
            sjfm.close();
        }catch(Exception e){
            e.printStackTrace();
        }


Это сообщение отредактировал(а) Tony - 1.2.2008, 23:37


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Ulysses4j
Дата 2.2.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

Репутация: 2
Всего: 10



Насколько я себе представляю положение дел, нельзя. Потому что JCAPI это хоть и Java API, но — к обыкновенной нативной тулзе, которая никак не может взаимодействовать с динамическими объектами, существующими в рамках JVM. Так что надо создавать файлы из ваших массивов и уже на их основе формировать task.


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
Tony
  Дата 2.2.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: нет
Всего: 12



Можно. Вопрос решён.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Ulysses4j
Дата 3.2.2008, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

Репутация: 2
Всего: 10



Показали бы решение-то...


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
Tony
Дата 4.2.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: нет
Всего: 12



Код

package compiler.compalers;

import java.util.List;

import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;

import compiler.AbstractCompiler;
/**
 * @version 1.0
 * @author Artemij
 * 02.02.2008
 */
public class MemoryCompiler extends AbstractCompiler{
    private List<String> options = null;
    private List<JavaFileObject> listClasses = null;
    private JavaCompiler compiler = null;
    private StandardJavaFileManager fileManager = null;
    /**
     * 
     * @param options. Compile options. Classes
     * @param listClasses
     */
    public MemoryCompiler(List<String> options, List<JavaFileObject> listClasses) {
        this.options = options;
        this.listClasses = listClasses;
        compiler = ToolProvider.getSystemJavaCompiler();
        fileManager  = compiler.getStandardFileManager(null, null, null);
    }
    /**
     * Compile classes
     * @return true if all sources compiled
     */
    @Override
    public boolean compile(){
        return compiler.getTask(null, fileManager, null, options, null, listClasses).call();    
    }
}


Код

package compiler.compalers;

import java.io.IOException;
import java.net.URI;

import javax.tools.SimpleJavaFileObject;
/**
 * @version 1.0
 * @author Artemij
 * 02.02.2008
 */
public class JavaClassFromString extends SimpleJavaFileObject{
    private String contents = null;
    /**
     * 
     * @param className Class name with out packages.Example: Test.java
     * @param contents. Class body.Example: package eee; public class Killer{...
     * @throws Exception
     */
    public  JavaClassFromString(String className, String contents) throws Exception{
         super(new URI(className), Kind.SOURCE);
         this.contents = contents;
    }
    public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
         return contents;
    }
}



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
SoulKeeper
Дата 5.2.2008, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Код

import compiler.AbstractCompiler;


А это что за зверь такой?

Хотя судя по кодо не нужен smile

Это сообщение отредактировал(а) SoulKeeper - 5.2.2008, 10:07
PM MAIL   Вверх
Kangaroo
Дата 5.2.2008, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(SoulKeeper @  5.2.2008,  09:05 Найти цитируемый пост)
А это что за зверь такой?

Хотя судя по кодо не нужен 

Абстрактный класс для компайлеров )
Код

public class MemoryCompiler extends AbstractCompiler



--------------------
Lost....
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.