Я просмотрел этот вопрос, но он не решил моей проблемы, поэтому я решил опубликовать новый.
Мне нужно создать исполняемый jar-файл (запускаемый простым двойным щелчком мыши) с помощью Ant. У меня есть следующий код Java и файл build.xml, который отлично компилирует код и создает файл jar, но когда я пытаюсь запустить банку двойным щелчком, я получаю сообщение «Не удалось найти основной класс: HttpController. Ява."
У меня есть подозрение, что моя проблема связана с загрузкой внешнего Apache Http.jar
, так как я успешно построил и запустил jar для проекта, который идентичен, за исключением того, что он не ссылается любые внешние баночки.
Вот мой код:
HttpController.java:
package pack;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpMessage;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class HttpController {
public static void main(String[] args) {
DefaultHttpClient client = new DefaultHttpClient();
HttpHost httphost = new HttpHost("localhost", 80);
try {
HttpMessage req = new HttpGet("/test.html");
HttpResponse resp = client.execute(httphost, (HttpGet) req);
HttpEntity entity = resp.getEntity();
BufferedReader in = new BufferedReader(new InputStreamReader(
entity.getContent()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// shutdown the connection
client.getConnectionManager().shutdown();
}
}
}
build.xml:
MANIFEST.MF:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_31-b05 (Sun Microsystems Inc.)
Main-Class: HttpController
Class-Path: dist/lib
EDITbuild.xml обновлен в соответствии с ответом Майка. Проблема до сих пор не решена. Также опубликовано содержимое файла манифеста, согласно ответу Danation.