1

プロジェクトの構造 プロジェクトの構造

コード:

public class WriterXlsx {
    public WriterXlsx(String sfilename, List<RecordNameCode> records, List<Day> recordsDay, Integer fullTime) {
        String path = "res/" + sfilename + ".xlsx";
        URL resURL = getClass().getClassLoader().getResource(path);
        try (InputStream inputStream = resURL.openStream())
        {
            int lastUsedColumn = createListHead().size();
            XSSFWorkbook workBook = new XSSFWorkbook(inputStream);
            XSSFSheet sheet = workBook.getSheetAt(0);

            drawRecordHead(createListHead(),sheet);
            writeContent(2, records,sheet);
            createPlanForDay(recordsDay,fullTime,lastUsedColumn,sheet,workBook);

            try(FileOutputStream out = new FileOutputStream("C:\\Users\\student3\\"+sfilename+".xlsx"); ) {
            workBook.write(out);
            out.close();         }

        } catch (IOException e) {
            e.printStackTrace();
        }

プログラムは SfileName に書き込み、res\IDE(Intellij IDEA) のファイルから読み取りますが、独立して動作しません。.jar アーカイブでプログラムを起動できません。(おそらく res ディレクトリが見つからない)..

マニフェスト:

Manifest-Version: 1.0
Main-Class: workhere.Start

クラス開始:

public class Start {
 public static void main(String[] args) {
        System.out.println("It's working");
        new Start().start(countDays);
        System.out.println("Work is finished");
    }
........
4

2 に答える 2

0

.getResource()Tryを使っているからだと思います

getClass().getClassLoader().getResourceAsStream(path);

それ以外の

getClass().getClassLoader().getResource(path);

ファイルが jar にパッケージ化されると、排他的なファイル システム パスであるファイル システム上のスタンドアロン ファイルではなくなります。ファイルは 1 つだけで、jar ファイルとそのコンテンツです。

于 2013-09-12T13:54:52.080 に答える