Uma classe não está sendo reconhecida

Criei uma classe ImprimePedido mas ela não pode ser importada, será que é algum erro na classe ou o problema é no NetBeans? Veja a classe abaixo:

package empresaiv;

import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.util.ArrayList;
import model.ItensPedidoClienteEstendida;
import model.PedidosCliente;

/**
 * 
 * Autor: Ronaldo Rodrigues Godoi
 * 
 */
public class ImprimePedido {
    public ImprimePedido(PedidosCliente pedidoCliente, ArrayList<ItensPedidoClienteEstendida> itensPedido) {
        Document documentPDF = new Document();
        try {
            PdfWriter.getInstance(documentPDF, new FileOutputStream("PedidoCliente.pdf"));
            documentPDF.open();
            Paragraph cabecalho = new Paragraph("Número do pedido: " + pedidoCliente.getId() + "\n" +
                    " Id Cliente: " + pedidoCliente.getId_cliente() +
                    " Confição de pagamento: " + pedidoCliente.getCondicao_pag() +
                    " Id Endereço de entrega: " + pedidoCliente.getId_endereco_entrega() +
                    " Data do Pedido: " + pedidoCliente.getData_pedido());
            documentPDF.add(cabecalho);
            
            int cont = itensPedido.size();
            
            documentPDF.add(new Paragraph(" "));
            
            double valorTotal = 0;
            for(int i = 1; i < cont; i++) {
                Paragraph corpoPedido = new Paragraph(itensPedido.get(i).getId_produto()+
                        " " + itensPedido.get(i).getDescricao_produto() +
                        " " + itensPedido.get(i).getQuantidade() +
                        " " + itensPedido.get(i).getPreco() +
                        " " + itensPedido.get(i).getQuantidade() * itensPedido.get(i).getPreco());
                valorTotal = valorTotal + itensPedido.get(i).getQuantidade() * itensPedido.get(i).getPreco();
                documentPDF.add(corpoPedido);
            }
            
            documentPDF.add(new Paragraph(" "));
            
            Paragraph totalizacao = new Paragraph("Valor total: " + valorTotal);
            documentPDF.add(totalizacao);
                    
            
        } catch (Exception erro) {
            erro.printStackTrace();
        }
        
        documentPDF.close();
        
    }
}

Atenciosamente,
Ronaldo

Acho que é erro no Netbeans mesmo.

talvez tenha um pacote dentro do outro e o caminho não esteja completo, não consegui ver com a foto. Mas qual erro ta dando?

Ele não reconhece a classe ImprimePedido como fazendo parte do package. Não vê a classe.
O que eu posso fazer no netbeans para ele reconhecer a classe?

faz um teste: Tente implementar essa classe e deixe ele importar sozinho. Se não der certo, pode ser erro no NetBeans mesmo. Entre nos arquivos do projeto e veja se essa classe ta lá. Se tiver, tente fechar e abrir novamente o netbeans

Posta a mensagem de erro exata que o NetBeans está apresentando pra você.

Ele diz que ImprimePedido não existe!!! Não sei mais o que fazer. Esse tipo de erro começou depois que eu importei um arquivo zip de relatório pdf.

Veja a mensagem de erro:
image

Isso é muito estranho. Esse zip que vc importou é o que?

faça um teste: Tente criar outra classe dentro desse pacote, com a mesma coisa dentro, e tente importar. Se não der certo, tente importar outra classe desse pacote só pra ver o que acontece. Pode ser um erro de cache do netbeans.

Acho que é erro no cache do netbeans. Depois que fiz a importação o netbeans mudou o menu do botão esquerdo, quando tento criar uma classe nova em uma pasta o netbeans não exibe mais a opção para classe nova e eu tenho que criar um arquivo vazio e dar nome com a extensão java. Não sei, mas parece que ele mudou o tipo de projeto para maven.

A classe ImprimePedido está em ordem?
Ela não está com erros de compilação?

Com certeza é esse zip o erro. Não sei o que ele é mas pode ser que tenha bugado o netbeans. Eu tentaria criar outro projeto e pegar suas coisas e passar tudo pra ele.

Essa classe não apresenta erro de compilação.

Tenta Ctrl+Shift+I no arquivo. Ele vai corrigir os imports, tirando os desnecessários. As versões mais novas do NetBeans estão meio estranhas em algumas situações. Eu tenho um problema crônico em um projeto meu por exemplo que eu tenho que fechar o NetBeans para algumas classes serem atualizadas na hora de compilar. Esse problema de não encontrar uma classe acontece tbm.

Enfim, testa o atalho que te passei. Se não resolver, renomeia a classe ImprimePedido. Seleciona ela do lado esquerdo, tecla F2, troca o nome, sei lá, põe um X no final, algo assim ImprimePedidoX, manda refatorar e vê se resolve. Se resolver, aí volta para o nome anterior.

1 curtida

Sim, eu poderia fazer isto mas esse zip é um projeto pdf e sem ele não posso usar as classe de impressão pdf. Não sei se estou importando da maneira correta. Como se usa um projeto de impressão pdf? O projeto foi baixado do endereço GitHub - LibrePDF/OpenPDF: OpenPDF is a free Java library for creating and editing PDF files with a LGPL and MPL open source license. OpenPDF is based on a fork of iText. We welcome contributions from other developers. Please feel free to submit pull-requests and bugreports to this GitHub repository. ⛺. Tudo que eu fiz foi baixar o zip e importar zip pelo netbeans. Como se usa esse projeto?

Surgiu um erro de compilação assim: operador diamante não pode ser usado com -source 5 só pode ser usado com -source 7 em diante. O que isto quer dizer?

Tentei o Ctrl+Shift+I mas não deu certo.

Eu to achando que é isso mesmo. Ele parece ser uma biblioteca pensada no Maven, tanto é que ele pede pra vc colocar lá as dependências no pom.xml. Tente fazer o que o [davidbuzatto] falou. Se não der certo, tente levar seu projeto pro Maven. Não sei se é viável pra vc fazer isso mas, tente criar o projeto novamente só que com o Maven. Mudar de um pro outro pode ter quebrado seu projeto. Aí vc pega suas classes e importa pra esse novo projeto.

Bom, eu segui as orientações do Gabriel e ele começou a reconhecer a Classe ImprimePedido mas não reconheceu os import(s) como por exemplo o import com.lowagie.text.Document;

Então o programa roda mas com erro de compilação. A grande dúvida é como usar o projeto de PDF LibrePDF/OpenPDF que está disponível no github. Alguém pode me ajudar com isso?

Se seu projeto não é Maven, modifique para ser um projeto Maven e faça exatamente o que consta no texto da página inicial do GitHub: adicionar a dependência a seguir:

<dependency>
  <groupId>com.github.librepdf</groupId>
  <artifactId>openpdf</artifactId>
  <version>1.3.29</version>
</dependency>

Esta correto meu arquivo pom.xml?

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>EmpresaVI</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.github.librepdf</groupId>
            <artefactId>openpdf</artefactId>
            <version>1.3.29</version>
        </dependency>
    </dependencies>
</project>

O NetBeans está dando os seguintes erros:

[ERROR] Some problems were encountered while processing the POMs:
Malformed POM C:\Users\Usuario\ProjetosJava\EmpresaVI\pom.xml: Unrecognised tag: 'artefactId' (position: START_TAG seen ...</groupId>\n            <artefactId>... @16:25)  @ C:\Users\Usuario\ProjetosJava\EmpresaVI\pom.xml, line 16, column 25
'dependencies.dependency.artifactId' for com.github.librepdf:null:jar is missing. @ line 14, column 21
 @ 
The build could not read 1 project -> [Help 1]
  
  The project com.mycompany:EmpresaVI:1.0-SNAPSHOT (C:\Users\Usuario\ProjetosJava\EmpresaVI\pom.xml) has 2 errors
    Malformed POM C:\Users\Usuario\ProjetosJava\EmpresaVI\pom.xml: Unrecognised tag: 'artefactId' (position: START_TAG seen ...</groupId>\n            <artefactId>... @16:25)  @ C:\Users\Usuario\ProjetosJava\EmpresaVI\pom.xml, line 16, column 25 -> [Help 2]
    'dependencies.dependency.artifactId' for com.github.librepdf:null:jar is missing. @ line 14, column 21

Além disso ele não encontra as classes, veja a mensagem de erro:

image

O que eu devo fazer para ele encontrar a classe main?

Veja a estrutura de arquivos do projeto:

image

Atenciosamente,
Ronaldo

Tente colocar assim:

<dependency>
  <groupId>com.github.librepdf</groupId>
  <artifactId>openpdf-fonts-extra</artifactId>
  <version>${openpdf.version}</version>
</dependency>

<dependency>
  <groupId>com.github.librepdf</groupId>
  <artifactId>openpdf</artifactId>
  <version>1.3.29</version>
</dependency>

Parece que vc escreveu “Artefact” com E ao invés de Artifact com I