Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

"java.lang.NoSuchMethodError": Erro ocorre no VSCODE e não ocorre no terminal com JAVAC <arquivo>.java

No curso "Certificação Java SE 7 Programmer I: métodos e encapsulamento", na aula 4 "Diferença entre o construtor padrão e construtores definidos pelo usuário":

O código:

class A { A(String s) { } A() { } }

class TestaConstrutores { public static void main(String[] args) { A a = new A(); A b = new A("guilherme"); } }

Se compilado via terminal: javac TestaConstrutores.java, compila normal.

Porém, se compilado/executado no VSCODE da Microsoft, apresenta o seguinte erro: Exception in thread "main" java.lang.NoSuchMethodError: 'void A.(java.lang.String)' at TestaConstrutores.main(TestaConstrutores.java:11)

Poderiam me ajudar a resolver esse erro do VSCODE?

1 resposta
solução!

Já entendi.

Nos arquivos do diretório existia um outro arquivo chamado [A.java] com a respectiva [classe A], obviamente o [construtor] dessa [classe] estava como padrão (sem argumentos). Por esso motivo, o VSCODE apresentava o erro já que ele acessava todos os arquivos da pasta. Quando executado diretamente no terminal, o JAVA compilava "apenas" o arquivo [TestaConstrutores.java].

Alterei o nome da [classe A] para [classe A2] e suas respectivas chamadas e referências e o teste de sobrecarga de construtores passou a compilar e funcionar no VSCODE.