Criando o executável de uma aplicação java (.jar) [RESOLVIDO]

9 respostas
T

Alguém poderia me informar um tutorial de como faço pra gerar um .jar para minha aplicação?

9 Respostas

Grinvon

Sinceramente, eu sempre crio um script em ANT para gerar o meu jar, se você quiser eu posso lhe passar um script que possa servir para você.

O JAR nada mais é do que um arquivo zipado com a extensão .jar. Esse arquivo terá a estrutura de dirétorios do seu source, ex:

/src/pacote1/pacote2

no seu jar estará contido essa estrutura (menos a pasta src), ou seja, todo o seu source no arquivo.jar.

Mas o java precisa saber qual é a classe principal de seu programa, então para isso existe um arquivo chamado MANIFEST.MF ele terá um atributo chamado Main-Class que mostrará a onde está a sua classe com o main.

ex de manifest :

Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Main-Class: pacote1.pacote.MinhaClasseComMain

Podemos vê que está setado a classe MinhaClasseComMain sendo ela a classe que tem o “main”. Sem esse atributo ele jamais irá conseguir executar o seu arquivo jar.

Feito isso salve o MANIFEST.MF contendo essas informações acima modificadas, e o coloque na pasta META-INF

agora dentro do seu arquivo arquivo.jar ficará

arquivo.jar

  • pacote1 (dentro dessa pasta existe a pasta pacote2 contendo o seu src)
  • META-INF/MANIFEST.MF

Qualquer dúvida cara fale comigo

leomc

toda semana alguém pergunta isso aki :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

oliveirarenan

Alguém poderia fazer um tutorial de como se gerar um arquivo .jar…

procurei, mas acho q nãoe existe…

falow

Jailton


Alguém poderia fazer um tutorial de como se gerar um arquivo .jar…

Sim. E poderia ser vc!

oliveirarenan

Com certeza.
Em alguns dias estará pronto.

Se pensou em me desafiar, o desafio foi aceito.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

richardpeder

oliveirarenan:
Com certeza.
Em alguns dias estará pronto.

Se pensou em me desafiar, o desafio foi aceito.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Já existe um tutorial de como criar um arquivo .JAR aqui no GUJ…

http://www.guj.com.br/java.artigo.42.1.guj

Não tem necessidade de desafios e tudo mais, basta usarem a busca do GUJ e tudo se acerta! :smiley:

ate mais…

J

Ainda estou conhecendo Java e fiz uma operação que pode ajudar. Mas o que fiz foi apenas experimental e os mais experientes no assunto podem falar se faz sentido.
O pre-requisito é ter o JRE instalado. Então tendo criado o arquivo JAR, no Windows, fui nas propriedades do arquivo, escolhi o botão “Alterar…” e selecionei o programa Java™ Platform SE binary, que é o JRE na minha máquina. Com isso o arquivo “.jar” que ao ser aberto, apresentava a pasta com todo o conteúdo do aplicativo, agora simplesmente abre o programa em seu método principal.
Peço que comentem isto. Sei apenas que funcionou.

C

Alguem poderia me ajudar pr colocar esse arquivo em .jar?

to levando um sufoco pr conseguir isso…

import <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import javax.swing.JFileChooser;

import javax.swing.JOptionPane;
public class Client extends JFrame {

private JTextField enterField;

private JTextArea displayArea;

private ObjectOutputStream output;

private ObjectInputStream input;

private String message = “”;

private String chatServer;

private Socket client;
// initialize chatServer and set up GUI

public Client( String host )

{

super( Client );

// set server to which this client connects
chatServer = host;

Container container = getContentPane();

// create enterField and register listener

enterField = new JTextField();

enterField.setEnabled( false );

enterField.addActionListener(

new ActionListener() {

// send message to server

public void actionPerformed( ActionEvent event )

{

sendData( event.getActionCommand() );

enterField.setText("");

}

} // end anonymous inner class

); // end call to addActionListener

container.add( enterField, BorderLayout.NORTH );

// create displayArea

displayArea = new JTextArea();

container.add( new JScrollPane( displayArea ),

BorderLayout.CENTER );
setSize( 300, 150 );

setVisible( true );

}
// connect to server and process messages from server

public void runClient()

{

// connect to server, get streams, process connection

try {

// Step 1: Create a Socket to make connection
connectToServer();

// Step 2: Get the input and output streams
getStreams();

// Step 3: Process connection
processConnection();

// Step 4: Close connection

closeConnection();

}
// server closed connection

catch ( EOFException eofException ) {

System.out.println( Server terminated connection );

}
// process problems communicating with server

catch ( IOException ioException ) {

ioException.printStackTrace();

}

}
// get streams to send and receive data

private void getStreams() throws IOException

{

// set up output stream for objects

output = new ObjectOutputStream(

client.getOutputStream() );

// flush output buffer to send header information
output.flush();

// set up input stream for objects
input = new ObjectInputStream(
client.getInputStream() );

displayArea.append( “\nGot I/O streams\n” );
}

// connect to server

private void connectToServer() throws IOException

{

displayArea.setText( Attempting connection\n );

// create Socket to make connection to server
client = new Socket(
InetAddress.getByName( chatServer ), 5000 );

// display connection information

displayArea.append( "Connected to: " +

client.getInetAddress().getHostName() );

}
// process connection with server

private void processConnection() throws IOException

{

// enable enterField so client user can send messages

enterField.setEnabled( true );

// process messages sent from server
do {

// read message and display it

try {

message = ( String ) input.readObject();

displayArea.append( \n + message );

displayArea.setCaretPosition(

displayArea.getText().length() );

}
// catch problems reading from server

catch ( ClassNotFoundException classNotFoundException ) {

displayArea.append( “\nUnknown object type received );

}

} while ( !message.equals( “SERVER>>> TERMINATE” ) );

} // end method process connection

// close streams and socket

private void closeConnection() throws IOException

{

displayArea.append( \nClosing connection );

output.close();

input.close();

client.close();

}
// send message to server

private void sendData( String message )

{

// send object to server

try {

output.writeObject( "CLIENT>>> " + message );

output.flush();

displayArea.append( \nCLIENT>>> + message );

}
// process problems sending object

catch ( IOException ioException ) {

displayArea.append( \nError writing object );

}

}
// execute application

public static void main( String args[] )

{

Client application;
if ( args.length == 0 )

application = new Client( 127.0.0.1 );

else

application = new Client( args[ 0 ] );

application.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE )
;

application.runClient();
}

} // end class Client


import <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;
public class Server extends JFrame {

private JTextField enterField;

private JTextArea displayArea;

private ObjectOutputStream output;

private ObjectInputStream input;

private ServerSocket server;

private Socket connection;

private int counter = 1;
// set up GUI

public Server()

{

super( Server );

Container container = getContentPane();

// create enterField and register listener

enterField = new JTextField();

enterField.setEnabled( false );

enterField.addActionListener(

new ActionListener() {

// send message to client

public void actionPerformed( ActionEvent event )

{

sendData( event.getActionCommand() );

enterField.setText("");

}

} // end anonymous inner class

); // end call to addActionListener

container.add( enterField, BorderLayout.NORTH );

// create displayArea

displayArea = new JTextArea();

container.add( new JScrollPane( displayArea ),

BorderLayout.CENTER );
setSize( 300, 150 );

setVisible( true );

}
// set up and run server

public void runServer()

{

// set up server to receive connections;

// process connections

try {

// Step 1: Create a ServerSocket.
server = new ServerSocket( 5000, 100 );

while ( true ) {

// Step 2: Wait for a connection.
waitForConnection();

// Step 3: Get input and output streams.
getStreams();

// Step 4: Process connection.
processConnection();

// Step 5: Close connection.
closeConnection();

++counter;

}

}
// process EOFException when client closes connection

catch ( EOFException eofException ) {

System.out.println( Client terminated connection );

}
// process problems with I/O

catch ( IOException ioException ) {

ioException.printStackTrace();

}

}
// wait for connection to arrive, then display connection info

private void waitForConnection() throws IOException

{

displayArea.setText( Waiting for connection\n );

// allow server to accept a connection
connection = server.accept();

displayArea.append( "Connection " + counter +

" received from: " +

connection.getInetAddress().getHostName() );

}
// get streams to send and receive data

private void getStreams() throws IOException

{

// set up output stream for objects

output = new ObjectOutputStream(

connection.getOutputStream() );

// flush output buffer to send header information
output.flush();

// set up input stream for objects
input = new ObjectInputStream(
connection.getInputStream() );

displayArea.append( “\nGot I/O streams\n” );
}

// process connection with client

private void processConnection() throws IOException

{

// send connection successful message to client

String message = SERVER>>> Connection successful;

output.writeObject( message );

output.flush();

// enable enterField so server user can send messages
enterField.setEnabled( true );

// process messages sent from client
do {

// read message and display it

try {

message = ( String ) input.readObject();

displayArea.append( \n + message );

displayArea.setCaretPosition(

displayArea.getText().length() );

}
// catch problems reading from client

catch ( ClassNotFoundException classNotFoundException ) {

displayArea.append( “\nUnknown object type received );

}

} while ( !message.equals( “CLIENT>>> TERMINATE” ) );
}

// close streams and socket

private void closeConnection() throws IOException

{

displayArea.append( \nUser terminated connection );

enterField.setEnabled( false );

output.close();

input.close();

connection.close();

}
// send message to client

private void sendData( String message )

{

// send object to client

try {

output.writeObject( "SERVER>>> " + message );

output.flush();

displayArea.append( \nSERVER>>> + message );

}
// process problems sending object

catch ( IOException ioException ) {

displayArea.append( \nError writing object );

}

}
// execute application

public static void main( String args[] )

{

Server application = new Server();

application.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE )
;

application.runServer();
}

} // end class Server

Eai pessoal tentei d tudo, estava fazendo no TextPad e nada, nao consegui transformar para arquivo jar, queria se alguem pudesse complicar esses arquivos…ou me ensinar a fazer passo a passo.

Obrigado.

fredferrao

ClovisJunior:
Alguem poderia me ajudar pr colocar esse arquivo em .jar?

to levando um sufoco pr conseguir isso…

Orientação rapida, Instale o Netbeans ou Eclipse e deixe que eles façam o .JAR pra voce. PONTO.

Criado 10 de maio de 2005
Ultima resposta 8 de nov. de 2008
Respostas 9
Participantes 9