Невозможно использовать отладчик (не удается подключиться к виртуальной машине)

1

У меня 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]

Я пробовал много вещей, касающихся этого:

  • перезапустить Eclipse
  • перезагрузить компьютер
  • Попробуйте использовать другой код
  • Переустановите Eclipse (Luna)
  • Удалите Eclipse (Luna) и замените его Eclipse Java EE (Kepler)
  • Вернитесь на Eclipse (Luna)
  • Удалите все экземпляры Java и установите Java 8
  • Удалите Java 8 и установите Java 7 (все установки Java с 64-разрядным установщиком)
  • Очистите реестр с помощью ccleaner

В настоящее время я работаю на 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

Программа должна работать так, как я ее предполагал. Я знаю, что это требует некоторой работы, но да.

Теги:
window

2 ответа

1

Некоторое время у меня была эта проблема. Я не мог найти окончательного решения (которое заставляет его работать в 100% случаев), но, по крайней мере, я могу отлаживать.

Сначала вам нужно проверить, уже ли javaw использует порт. Для этого в Windows у вас есть два варианта:

  • перейдите в диспетчер задач → монитор ресурсов → сеть.

И там проверьте наличие портов для прослушивания (javaw использует 5001 и 8080)

  • run → cmd → и затем введите: netstat -n

Вы увидите порты 5001 и 8080 при прослушивании.

Если вы видите, что открытые порты не будут отлаживаться. Запустите приложение как обычно, остановите его, подождите несколько секунд и проверьте еще раз.

Если вы не видите их при прослушивании, вы можете отлаживать, но не делайте этого через меню; перейдите в Run → Debug configurations → и оттуда оттуда оттуда.

Я знаю, что это не окончательное решение (и эта проблема уже 1 год), но это работало для меня достаточно, чтобы позволить мне отлаживать и продолжать развиваться.

  • 0
    Примечание. Я уже несколько раз проверял, блокирует ли его брандмауэр или нет. Я определенно должен проверить монитор ресурсов и подождать, пока экземпляры javaw не умрут, прежде чем я смогу отладить. По какой-то причине компиляция убивает текущие процессы, а отладка - нет.
0

Это решение говорит, что это может быть связано с тем, что порт, который отладчик хочет использовать, используется.

Я думаю, что это также может быть брандмауэр, блокирующий его, убедитесь, что это не проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню