Witam . Napisałem sobie prostą aplikację okienkową a mianowicie kalkulator. Pisałem w Eclipse , zapisałem i mam 2 pliki class. Przekompilowałem przez konsole cmd do pliku *jar . I mam problem z otwarciem tego pliku . Czytałem gdzieś ,że po edycji pliku MANIFEST i dopisaniu tam linijki : Main-Class: Kalkulator(tak się nazywa mój plik class) , będzie wszystko działać . Po dwukrotnym kliknięciu na plik po oczywistym zapisaniu pliku MANIFEST i nadpisaniu Biblioteki Winrar , nic się nie dzieje . Ani nie uruchamia się proces , ani żadne okienko . Dodam ,że w Eclipse normalnie program działał .
Ewentualnie jak by się dało to z tego pliku jar zrobić plik *exe .
Znalazłem program JSmooth ,ale kompletnie nie wiem jak się nim obsłużyć . Gdyby ktoś mógł podać link do tutoriala bądź filmu to był bym wdzięczny .
@Edit : Udało mi się znaleŹć program Launch4j , po przekompilowaniu przez ten program do exe ,otwieram plik a tam bład : Failed to load Main-Class Manifest attribute from. Może jakiś błąd w kodzie ? Ale wszystko działa w Eclipse
package kalkulator;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Kalkulator
{
static JTextField text;//Ustawia textfielda jako statycznego.
public static void main(String[] args)
{
JFrame okno = new JFrame("Kalkulator");//Tworzy frame o nazwie okno.
okno.setSize(250,350);//Rozmiar w pixelach (szerokość,wysokość)
okno.setLocation(300, 300);//Okno pojawi się 300pix od lewej i 300pix od góry.
okno.setResizable(false);//Czy użytkownik może zmieniać rozmiar okna.
okno.setVisible(true);//Wyświetla frame o podanej nazwie.
okno.setLayout(null);//Musi być to jeżeli programista chce sam ustalać gdzie mają być textfieldy itd.
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
text = new JTextField();
text.setBounds(10, 10, 230, 50);
Font time_new = new Font("Time News Roman",Font.BOLD,24);// (Nazwa,Pogrubienie itd.,rozmiar)
text.setFont(time_new);//Ustawia w text fieldzie czcionkę.
text.setHorizontalAlignment(JTextField.RIGHT);//Dzięki temu piszemy od prawej strony.
okno.add(text);//Musi być pod stworzonym oknem.
JButton button = new JButton("Oblicz");
button.setBounds(10, 70, 40, 40);
okno.add(button);
button.setBorder(null);
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0) /*text.setText(text.getText() + "1");//Pobiera to co jest wpisane już w textfield */
{ // i dopisuje do tego to co jest w nawiasie.
String str = text.getText();
////////////////////////////////////////////////////////
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");//
String foo = str;
try {
text.setText(String.valueOf(engine.eval(foo)));
}
catch (ScriptException e)// Jeżeli wpisane dane nie są związane z obliczeniami np abcdef...
{
JFrame error = new JFrame("Error!");
error.setSize(250, 70);
error.setLocation(300, 300);
JLabel label = new JLabel ("Error! Podano złą wartość!");
error.add(label);
error.setVisible(true);
}
}
});
}
}