| Виды программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки Вопросы производительности и ресурсоёмкости, JSP vs PHP Отображение хитрых символов Расстояние между кнопками Работа с клавиатурой в Java Java everywhere..., even on Mars Swing & focus БД. Как визуализировать данные на форме?.., а также реализовать основные операции.. отображение корректного адреса, точнее того который нужен Вывод данных выбраного объекта в поля int и String Нужна ли лицензия? Есть ли перспективы изучать Java??? Как узнать из какого метода позвался, текущий метод (т.е. как узнать caller'а) problema s JBUILDER, ne idet instalyaciya Получение изображения из сервлета TreeModel Какой алгоритм сборки мусора в Java? IDEA 4.0, Gui Designer Java on Mac OS Обработка нажатия на клавиатуру Java + FreeBSD, Описание установки Явы на Фрю Проблемы с Forte работа с TextArea РАбота с текстовым файлом, хочу порстой пример работы с txt Интефейсы Печать из апплета, Не могу разобраться с печатью апплета Срочно! Есть у кого-нибудь руководство по... народ хочу начать изучать java помощь IBM в переводе Java на принципы open source, Компьютерра: статья Localhost Full screen mode, Проблемы работы в полноэкранном режиме COM wrapper Кто работал с rmi А какую версию JDK Вы используете?, и почему? :) Как узнать какую таблицу я изменил?, java.sql.*; как работать с EJB на Oracle Как Вы относитесь к курящим девушкам? Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки работа с JTree Ошибка в добавлении!!! JavaVM, under Linux Red Hat 9.0 трансляция классов, трансляция классов из программы Мнение о разработках Opensymphony.com PrintScreen.., возможно?.. Razbor stroki (is String poluchit' komandu) Симметричная разность setBackgound().., как поменять цвет фрейма?.. Servlet & SSL getElement ->JTextField->addElement Эй, никого не раздрожает множество версий Java ? "write once - work everywhere"- так ли всё гладко? Ответ Sun относительно открытых исходников, Компьютерра:Ответ на дайте Джаве свободу Rediraction Объявление переменной Фон(рисунок) в JToolBar, Реально ли? Загрузка библиотеки из программы, Как загрузить *.jar файл.....? А как вставить картинку в ячейку таблицы??? Криптование ассиметричными ключами., Где взять реализацию DSA/RSA? Запись файла на Web сервер jni & cygwin Високосный год..., как орпеделить??? Фокус и JTable Java vs MySQL, Проблемы с кодировкой Возведение в степень CellEditor в JTable, Создание и возможности TextField или JTextField..., накиньте литературку, плз! Основы. Object.hashCode(), расскажите смысл и правила пож. |
Платные хостинги Раскрутка сайта Книги по программированию трансляция классов, трансляция классов из программы
- Кросспост:Если пытаться генерить исходный код (файл с расширением ява) то тут одно из 2-х. Либо через шелл запускать компилятор, а потом подгружать через рефлексию полученный файл, либо писать свой компилятор и писать в файл уже скопилированный класс. ЗЫ. Вообще то не желательно создавать дублирующиеся темы... - Самомодифицирующийся код - самый надежный способ сделать программу неотлаживаемой. - Кстати... А зачем тебе это? Может ты велосипед изобретаешь? - В принципе такое возможно.Как-то мне попалась статья от SUN. Постараюсь ее сократить Итак, начнем с кода примера. Сама форма предназначена только для ввода данных, поэтому конструктор и метод main представляет мало интереса (если Вы конечно не совсем новичок в SWING). Самое интересное находится в методе doCompile в самом низу программы.Код import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.lang.reflect.*;public class RunIt extends JFrame { JPanel contentPane; JScrollPane jScrollPane1 = new JScrollPane(); JTextArea source = new JTextArea(); JPanel jPanel1 = new JPanel(); JLabel classNameLabel = new JLabel("Class Name"); GridLayout gridLayout1 = new GridLayout(2,1); JTextField className = new JTextField(); JButton compile = new JButton("Go"); Font boldFont = new java.awt.Font("SansSerif", 1, 11); public RunIt() { super("Editor"); setDefaultCloseOperation(EXIT_ON_CLOSE); contentPane = (JPanel) this.getContentPane(); this.setSize(400, 300); classNameLabel.setFont(boldFont); jPanel1.setLayout(gridLayout1); compile.setFont(boldFont); compile.setForeground(Color.black); compile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { doCompile(); } catch (Exception ex) { System.err.println("Error during save/compile: " + ex); ex.printStackTrace(); } } }); contentPane.add(jScrollPane1, BorderLayout.CENTER); contentPane.add(jPanel1, BorderLayout.NORTH); jPanel1.add(classNameLabel); jPanel1.add(className); jScrollPane1.getViewport().add(source); contentPane.add(compile, BorderLayout.SOUTH); } public static void main(String[] args) { Frame frame = new RunIt(); // Center screen Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation( (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.show(); } private void doCompile() throws Exception { // write source to file String sourceFile = className.getText() + ".java"; FileWriter fw = new FileWriter(sourceFile); fw.write(source.getText()); fw.close(); // compile it int compileReturnCode = com.sun.tools.javac.Main.compile(new String[] {sourceFile}); if (compileReturnCode == 0) { // run it Object objectParameters[] = {new String[]{}}; Class classParameters[] = {objectParameters[0].getClass()}; Class aClass = Class.forName(className.getText()); Object instance = aClass.newInstance(); Method theMethod = aClass.getDeclaredMethod("main", classParameters); theMethod.invoke(instance, objectParameters); } }}highlightSyntax('javaYzViMG','java'); После того как текст набран, его надо скомпилировать. Заметьте, что добавлена дополнительная библиотека tools.jar. Она лежит в SDK - поищите. Т.к. у меня установлена переменная окружения JAVA_HOME, то я ей и воспользовался.Код javac -classpath .;%JAVA_HOME%\lib\tools.jar RunIt.javahighlightSyntax('javaMmRmY2Q','java');Если все скомпилировалось, то можно запустить наше приложение.Код java -classpath .;%JAVA_HOME%\lib\tools.jar RunIthighlightSyntax('javaiMmU5YWR','java');ВАЖНО - запускайте именно через java, а не javaw - нам понадобится наблюдать за окном, где запущена сама java.Перед вами обычная форма у которой верхнее поле ввода для имени класса, второе поле - для тела (программы).Введите в верхнее поле Sample а в нижнее полеКод public class Sample { public static void main(String args[]) { System.out.println(new java.util.Date()); }}highlightSyntax('java5MjM5YjZi','java');и нажмите кнопку Go. И можно будет увидеть с окне, где запущена java сегодняшнюю дату. Дело сделано. |