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

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

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

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

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

procurei, mas acho q nãoe existe…

falow

[quote]
Alguém poderia fazer um tutorial de como se gerar um arquivo .jar… [/quote]

Sim. E poderia ser vc!

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:

[quote=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: [/quote]

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…

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.

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

to levando um sufoco pr conseguir isso…

import java.io.;
import java.net.
;
import java.awt.;
import java.awt.event.
;
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 java.io.;
import java.net.
;
import java.awt.;
import java.awt.event.
;
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.

[quote=ClovisJunior]Alguem poderia me ajudar pr colocar esse arquivo em .jar?

to levando um sufoco pr conseguir isso…
[/quote]

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