Метод должен вызывать ошибку super() в Netbeans
Недавно я создал проект Netbeans, и я использую SVN вместе с ним. Я вижу повторяющуюся ошибку класса, а в консоли он говорит
java.lang.VerifyError: (class: pie/chart/explorer/PieChartExplorer, method: <init> signature: ()V) Constructor must call super() or this()
Could not find the main class: pie.chart.explorer.PieChartExplorer. Program will exit.
Exception in thread "main" Java Result: 1
Вот PieChartExplorer.java:
package pie.chart.explorer;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class PieChartExplorer extends JFrame implements ActionListener {
JTextField one = new JTextField(10);
JTextField two = new JTextField(10);
JTextField three = new JTextField(10);
JButton sub = new JButton("Click to be amazed");
public PieChartExplorer() {
super("Pie Chart Explorer");
setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout flo = new FlowLayout();
setLayout(flo);
setVisible(true);
add(one);
add(two);
add(three);
sub.addActionListener(this);;
add(sub);
}
public static void main(String[] args) {
PieChartExplorer app = new PieChartExplorer();
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == sub) {
try {
Pie show = new Pie(Float.parseFloat(one.getText()),Float.parseFloat(two.getText()),Float.parseFloat(three.getText()));
} catch(Exception ex) {
JOptionPane.showMessageDialog(this, "Please check entered data");
}
}
}
}
Я пробовал:
- Проект по очистке и перестройке
- Убедившись, что я назвал super во всех конструкторах
Как это можно зафиксировать? Код для загрузки.
Ответы
Ответ 1
Я видел эти симптомы только на днях.
У меня был файл, который я редактировал, и решил, что хочу разбить свои изменения на 2 коммита. Я пошел в каталог, содержащий мой файл "x/y/Z.java", создал каталог в "x/y" с именем "backup", переместил "Z.java" и вытащил новую копию из контроля версий. Обратите внимание, что все это было сделано вне IDE.
Вернувшись в среду IDE, я объединился в изменениях для первого коммита, и когда я построил, я получил сообщение о дубликат класса для "Z.java".
Когда я скопировал источник в "backup", я сделал это вне IDE, и у него все еще был оригинальный пакет "x.y", как и мой недавно отредактированный "Z.java". NB не будет компилировать новую "Z.java", поскольку он мог видеть, что она уже создала "x.y.Z.class" (из "x/y/backup/Z.java" ).
Есть два способа исправить это:
- Переименуйте "x/y/backup/Z.java" в "x/y/backup/Z.java.backup". (Предотвращение компиляции резервной копии.)
- Измените пакет в "x/y/backup/Z.java" с "x.y" на "x.y.backup". (Сделайте резервную копию, создайте другой файл класса.)
После внесения любого из этих изменений выполните "очистить и построить". Примечание: простое построение не устранит проблему, вам нужно выполнить очистку, чтобы удалить файл класса rogue.
Примечание. # 1 было выполнено путем переименования Z.java из командной строки, а не внутри NB. NB не позволит вам изменить расширение файла.
Ответ 2
Я обнаружил, что переименование пакета не сработало, старый пакет все еще был там.
Проблема для меня началась, когда я скопировал пакет из другого приложения в текущее приложение, у которого уже был пакет с тем же именем. Я пытался добавить некоторые недостающие классы в пакет. После того, как я это сделал, произошла ошибка.
Чтобы решить эту проблему, я удалил весь пакет из целевого веб-приложения и сделал чистую и сборку. Затем я скопировал исходный пакет в целевое приложение. Нет ошибок.
Ответ 3
Очистка и строительство решают проблему
Ответ 4
Если у вас все еще есть проблема, вот как я ее решил.
В моем случае я сменил класс с основным методом позже, и исходный класс по-прежнему ссылался в файле пропорций.
Измените эту настройку, очистите и постройте.. Это сработало для меня...
Ответ 5
В моем случае у меня была такая же проблема в веб-приложении после создания внешней копии POJO и вручную ее редактирования за пределами NETBEANS. На самом деле проблема заключалась в том, что другие предложили в других ответах о конфликте в уже скомпилированных файлах .class
.
Что я сделал, чтобы преодолеть это, просто удалить папку webAppname/WEB-INF/classes
(где скомпилированные классы находятся), а затем сделать Clean and Build
Надеюсь, это поможет кому-то