NetBeans не распознает файл .tex - PullRequest
0 голосов
/ 21 мая 2018

Для важного проекта я пытаюсь использовать стороннюю библиотеку JLR для экспорта отформатированного отчета PDF.

Это работало корректно до двух дней назад, когдапри наведении курсора на файл .tex, который я использую в качестве шаблона для отчета в средстве просмотра файлов IDE NetBeans, отображается подсказка, обозначающая файл как «нераспознанный файл».Он также больше не будет импортироваться как ресурс, так как при использовании метода класса getResource или его метода ClassLoader.getResource полученный объект File не существует.У меня все в своем рабочем каталоге на своем месте, и я ссылаюсь на него через относительный путь к файлу.

  1. Что это значит?
  2. Как я могу получить файл, который будет распознан?
  3. Можно ли предотвратить повторение этого с этим типом файла?

РЕДАКТИРОВАТЬ: я попытался изменить, с каким типом MIME NetBeans связывает файл, чтобы увидеть, распознает ли его NetBeans, но это имеетбыл неудачным.

РЕДАКТИРОВАТЬ: Вот соответствующий код, если кто-то хочет видеть.

public Boolean createAndFormatLaTex(String nameOfExercise, String author, String date, String desc, List<Rule> rulesToPrint) {

    Boolean success = true;
    gen = new JLRGenerator();
    try {

        ClassLoader cl = this.getClass().getClassLoader();

        URL templateLoc = cl.getResource("resources/templateRep.tex");
        File templateFile = new File(templateLoc.getFile());
        //URL workDirLoc = cl.getResource(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator);
        File workDir = new File(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator);
        //URL tempDirLoc = cl.getResource(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator+"temp"+File.separator);
        File tempDir = new File(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator+"temp"+File.separator);
        File reptemp1 = new File(tempDir.getAbsolutePath() + File.separator + nameOfExercise+"-report.tex");

        String s = templateFile.getAbsolutePath();

        templateFile.setReadable(true);

        conv = new JLRConverter(workDir);

        conv.replace("date", date);
        conv.replace("description", desc);
        conv.replace("authorName", author);
        conv.replace("nameOfExercise", nameOfExercise);
        conv.replace("rulesToPrint", rulesToPrint);


        if (!conv.parse(templateFile, reptemp1)) {
            success = false;
        }

        File desktop = new File(System.getProperty("user.home") + File.separator + "Desktop");
        if(!gen.generate(reptemp1, desktop ,workDir))
        {
            success = false;
        }
        reptemp1.deleteOnExit();
        tempDir.deleteOnExit();

    } catch (IOException iex) {
        System.out.println(iex.getMessage());
        return false;
    //} catch (URISyntaxException ex) {
      //  Logger.getLogger(LaTexParser.class.getName()).log(Level.SEVERE, null, ex);
      //  return false;
    }catch(NullPointerException nex){
        Logger.getLogger(LaTexParser.class.getName()).log(Level.SEVERE, null, nex);
        return false;
    }

    return success;
}

1 Ответ

0 голосов
/ 22 мая 2018

Хорошо, поэтому я собирал решения от других людей, и тот, кто работал, должен был читать ресурс как InputStream, а не как File.

Это будет выглядеть так:

ClassLoader cl = this.getClass().getClassLoader();

        InputStream is = cl.getResourceAsStream("resources/templateRep.tex");
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        //URL workDirLoc = cl.getResource(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator);
        File workDir = new File(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator);
        //URL tempDirLoc = cl.getResource(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator+"temp"+File.separator);
        File tempDir = new File(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator+"temp"+File.separator);

        File reptemp1 = new File(tempDir.getAbsolutePath() + File.separator + nameOfExercise+"-report.tex");
        File tempStorageFile = new File(tempDir.getAbsolutePath() + File.separator + "tempStorage.tex");

        OutputStream os = new FileOutputStream(tempStorageFile);
        IOUtils.copyLarge(is, os);
        os.close();

заменит

ClassLoader cl = this.getClass().getClassLoader();

    URL templateLoc = cl.getResource("resources/templateRep.tex");
    File templateFile = new File(templateLoc.getFile());
    //URL workDirLoc = cl.getResource(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator);
    File workDir = new File(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator);
    //URL tempDirLoc = cl.getResource(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator+"temp"+File.separator);
    File tempDir = new File(System.getProperty("user.home")+File.separator+"MaMoOr"+File.separator+"resources"+File.separator+"temp"+File.separator);
    File reptemp1 = new File(tempDir.getAbsolutePath() + File.separator + nameOfExercise+"-report.tex");

    String s = templateFile.getAbsolutePath();

в моем исходном коде.

...