У меня Eclipse довольно долгое время, но недавно я натолкнулся на ошибку, которая действительно меня беспокоит прямо сейчас, потому что я не могу использовать отладчик. Я могу нормально запускать свою программу, но не отладчик. Это то, что я получаю, когда пытаюсь работать с отладчиком:
"Запуск CarLoanUser" возникла проблема Не удается подключиться к VM Не удается подключиться к VM com.sun.jdi.connect.TransportTimeoutException
и в консоли:
FATAL ERROR в собственном методе: JDWP инициализируется транспортом, jvmtiError = AGENT_ERROR_TRANSPORT_INIT (197) ОШИБКА: транспортная ошибка 202: соединение не выполнено: разрешение отклонено ERROR: JDWP Transport dt_socket не удалось инициализировать, TRANSPORT_INIT (510) Ошибка выхода JDWP AGENT_ERROR_TRANSPORT_INIT (197): Нет транспонирует инициализированный [debugInit.c: 750]
Я пробовал много вещей, касающихся этого:
В настоящее время я работаю на 64-разрядной версии Windows 8.1
Если это может помочь, я включу код, который я сейчас работаю
import java.util.Scanner;
import java.text.NumberFormat;
/**
* Title: CarLoanUser
* Description:
* @author
* @version 1.0
*/
public class CarLoanUser {
/**
* @param args
*/
public static void main(String[] args) {
runWithConsole();
}//main(args)
public static void runWithConsole()
{
NumberFormat money = NumberFormat.getCurrencyInstance();
Scanner key = new Scanner(System.in);
CarLoanMethods user;
int numberOfPayments = 0;
double remainingAmount, remainingAmountInCalculation;
user = new CarLoanMethods();
System.out.print("What is the model? ");
user.setModel(key.nextLine());
System.out.print("What is the loan amount? ");
user.setLoanAmount(key.nextInt());
remainingAmountInCalculation = user.getLoanAmount();
System.out.print("What is the interest rate? ");
user.setInterestRate(key.nextInt());
System.out.print("What is the monthly payment? ");
user.setMonthlyPayment(key.nextInt());
user.calculateEverything();
System.out.printf("\n%10s%35s", "Car model: ", user.getModel());
System.out.printf("\n%14s%31s", "Amount to pay: ", money.format(user.getTotalPrice()));
System.out.printf("\n%33s%12s", "Total interest that will be paid: ", money.format(user.getTotalInterest()));
System.out.printf("\n%19s%26s", "Number of payments: ", user.getNumberOfPayments());
}//runWithConsole()
}//CarLoanUser class
И класс метода:
/**
* @author
*
*/
public class CarLoanMethods {
private String model;
private int loanAmount;
private int interestRate;
private int numberOfPayments = 0;
private double monthlyPayment;
private double interestTotal;
private double interest;
private double toBePaid;
public CarLoanMethods()
{
model = "Unknown";
loanAmount = 0;
interestRate = 0;
monthlyPayment = 0;
}//CarLoanMethods()
public CarLoanMethods(String userModel, int userLoan)
{
model = userModel;
loanAmount = userLoan;
interestRate = 0;
monthlyPayment = 0;
}//CarLoanMethods(String, int)
public CarLoanMethods(int userInternetRate, int userMonthlyPayment)
{
model = "Unknown";
loanAmount = 0;
interestRate = userInternetRate;
monthlyPayment = userMonthlyPayment;
}//CarLoanMethods(int, int)
public void setModel(String userModel)
{
model = userModel;
}//setModel(String)
public String getModel()
{
return model;
}//getModel()
public void setLoanAmount(int userLoan)
{
loanAmount = userLoan;
}//setLoanAmount(int)
public int getLoanAmount()
{
return loanAmount;
}//getLoanAmount()
public void setInterestRate(int userInterestRate)
{
interestRate = userInterestRate;
}//setInterestRate(int)
public int getInterestRate()
{
return interestRate;
}//getInterestRate()
public void setMonthlyPayment(double userMonthlyPayment)
{
monthlyPayment = userMonthlyPayment;
}//setMonthlyPayment(double)
public double getMonthlyPayment()
{
return monthlyPayment;
}//getMonthlyPayment()
public double getTotalInterest()
{
return interestTotal;
}//getTotalInterest()
public double getTotalPrice()
{
return interestTotal + loanAmount;
}//getTotalPrice
public int getNumberOfPayments()
{
return numberOfPayments;
}
public void calculateEverything()
{
double remainingAmountInCalculation = getMonthlyPayment();
while (remainingAmountInCalculation >= 0)
{
interest = remainingAmountInCalculation * ((interestRate / 100.0) / 12.0);
interest = Math.round(interest * 100.0) / 100.0;
remainingAmountInCalculation = (remainingAmountInCalculation + interest) - monthlyPayment;
interestTotal += interest;
++numberOfPayments;
}
}
}//CarLoanMethods
Программа должна работать так, как я ее предполагал. Я знаю, что это требует некоторой работы, но да.
Некоторое время у меня была эта проблема. Я не мог найти окончательного решения (которое заставляет его работать в 100% случаев), но, по крайней мере, я могу отлаживать.
Сначала вам нужно проверить, уже ли javaw использует порт. Для этого в Windows у вас есть два варианта:
И там проверьте наличие портов для прослушивания (javaw использует 5001 и 8080)
Вы увидите порты 5001 и 8080 при прослушивании.
Если вы видите, что открытые порты не будут отлаживаться. Запустите приложение как обычно, остановите его, подождите несколько секунд и проверьте еще раз.
Если вы не видите их при прослушивании, вы можете отлаживать, но не делайте этого через меню; перейдите в Run → Debug configurations → и оттуда оттуда оттуда.
Я знаю, что это не окончательное решение (и эта проблема уже 1 год), но это работало для меня достаточно, чтобы позволить мне отлаживать и продолжать развиваться.
Это решение говорит, что это может быть связано с тем, что порт, который отладчик хочет использовать, используется.
Я думаю, что это также может быть брандмауэр, блокирующий его, убедитесь, что это не проблема.