Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Параметр манифеста при запуске jar файла

#java #jar #linux


Прошу отнестить с пониманием, поскольку я новичок в Java. Пытался запустить jar файл
в Linux с помощью команды
./java -jar /Samplejavaprogram/Sample.jar

и получил в результате сообщение
no main manifest attribute, in /Samplejavaprogram/Sample.jar

Подскажите, что именно надо добавить в команду (хотелось бы знать конкретный текст),
чтобы выполнить java программу.
Привожу текст программы (может быть в нем причина)
package org.myorg;

import java.io.*;
import java.util.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.*;

public class Sample {
    public static void main (String[] args) throws IOException  {
                    int CountComputers;
            FileInputStream fstream = new FileInputStream(
                    "/export/hadoop-1.0.1/bin/countcomputers.txt");
            DataInputStream input = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(input));
            String result=br.readLine();
            CountComputers=Integer.parseInt(result);
            input.close();
            fstream.close();
            Connection con = null;
            Statement st = null;
                ResultSet rs = null;    
               String url = "jdbc:postgresql://192.168.1.8:5432/NexentaSearch";
                String user = "postgres";
                String password = "valter89";
            ArrayList paths = new ArrayList();
            try
            {
                con = DriverManager.getConnection(url, user, password);
                        st = con.createStatement();
                        rs = st.executeQuery("select path from tasks order by id");
                while (rs.next()) { paths.add(rs.getString(1)); };
                PrintWriter zzz = null;
                    try
                    {
                            zzz = new PrintWriter(new FileOutputStream("/export/hadoop-1.0.1/bin/readwaysfromdatabase.txt"));
                    }
                    catch(FileNotFoundException e)
                    {
                            System.out.println("Error");
                            System.exit(0);
                    }
                    for (int i=0; i


Ответы

Ответ 1



Запускаете вы правильно (если забыть про слеш в начале пути к jar; у вас что, папка Samplejavaprogram в корневой директории лежит?). Ошибка в манифесте jar-файла, который вы пытаетесь запустить. Скорее всего отсутствует свойство Main-Class. Проверьте, чтобы в вашей Sample.jar в папке META-INF был файл MANIFEST.MF, а в нём строка Main-Class: путь.к.вашему.главному.классу.ГлавныйКласс.

Ответ 2



Я бы еще посоветовал использовать сборщик проектов, на-пример, Gradle. Добавив скрипт сборки в ваш проект, Gradle сделает все за Вас. Вот пример скрипта который при сборке проекта будет паковать все в .jar build.gradle group 'MyApplication' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'application' sourceCompatibility = 1.8 targetCompatibility = 1.8 mainClassName ="com.common.Application" buildscript { repositories { mavenCentral() } } repositories { mavenCentral() } // Include dependent libraries in archive. jar { manifest { attributes "Main-Class": "$mainClassName" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' //JSON compile group: 'org.json', name: 'json', version: '20090211' //Log4j compile group: 'log4j', name: 'log4j', version: '1.2.16' }

Комментариев нет:

Отправить комментарий