JAR правильно запускается из командной строки, но не двойным щелчком мыши.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JAR правильно запускается из командной строки, но не двойным щелчком мыши.

Сообщение Anonymous »

У меня есть настольное приложение, которому необходимо считывать данные из текстового файла и отображать изображения в формате JPEG. В NetBeans все работает нормально, а JAR открывается и корректно запускается из командной строки, как только я перемещаю его в каталог, отличный от NetBeans. Однако, когда я открываю приложение двойным щелчком мыши, открывается графический интерфейс, но поля, которые должны отображать данные, остаются пустыми.
Я видел другие сообщения, в которых предлагается использовать IOStreams, а не FileReaders и FileWriters, поэтому я переписал все таким образом. Однако происходит то же самое - все это работает в NETBEANS, все работает нормально из командной строки с java -jar , но двойной щелчок по значку просто отображает мой графический интерфейс без каких-либо данных, которые он должен был прочитать, и без отображения каких-либо изображений.
Я также прочитал ряд статей о путях к классам, но догадался, что если бы это была проблема, мое приложение не было бы можно ли запустить из командной строки?
Вот упрощенная версия того, что я пытаюсь сделать: прочитать текстовый файл и отобразить его содержимое в JPanel (я понимаю, что я включил больше импорта, чем нужно для этой упрощенной версии):
package com.steve;

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Testing extends JFrame{

public Testing(){
super("My Test App");
EntryPanel panel = new EntryPanel();
this.getContentPane().add(panel);
this.setSize(800, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public class EntryPanel extends JPanel{

String strTextToDisplay;

public EntryPanel(){
super();
try{
this.strTextToDisplay = getTextFromFile();
}
catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}

private String getTextFromFile() throws IOException{
String fileName = "testfile.txt";
var filePath = Paths.get(fileName);
String myStr = "Here it is:\n";
try(BufferedReader br = Files.newBufferedReader(filePath, StandardCharsets.UTF_8)){
String line;
while((line = br.readLine()) != null){
myStr = myStr.concat(line).concat("\n");
}
}
System.out.println(myStr);
return myStr;
}

@Override
public void paintComponent(Graphics g){
g.setColor(new Color(0, 0, 255));
g.fillRect(0,0, this.getWidth(), this.getHeight());
g.setColor(new Color(255, 100, 100));
g.setFont(new Font("Serif", Font.BOLD, 15));
g.drawString(strTextToDisplay, 20, 20);
}
}

public static void main(String[] args){
System.out.println("In main");
Testing myTest = new Testing();
}

}

Мой файл манифеста.txt выглядит следующим образом:
Manifest-Version: 1.0
Class-Path: com.resources/testfile.txt
Main-Class: com.steve.Testing
Created-By: 21.0.10 (Ubuntu)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»