我正在寫一個簡單的java程序,意圖打破afk限制。每當我在Eclipse中運行它時,它都可以正常工作。但是,當我將它作爲可運行jar文件導出時,它不會模擬按鍵。我相信我有正確的運行配置和一切,這就是爲什麼我很困惑。 總之,這裏是主類:Java程序在eclipse中的工作,但從罐子裏
package minebot;
import javax.swing.JOptionPane;
public class MineBotRunner
{
public static void main(String[] args)
{
try
{
MineBot bot = new MineBot();
bot.run();
}
catch (Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null, "MineBot encountered an error and will now close.", "MineBot", -1);
System.exit(0);
}
}
}
這裏是其它類:
package minebot;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class MineBot implements ActionListener
{
private JFrame frame;
private JButton button;
private String title = "MineBot";
private boolean isMoving = false;
private long sysTime;
private long waitTime;
private long delay = 780000; //A 13 minute interval between actions to beat the 15 minute AFK limit.
private int holdDelay = 500; //A .5 second hold time for key presses.
private int wait = 200; //A .2 second wait time between forward and reverse actions.
private int forward = KeyEvent.VK_W; //The key held for the first action.
private int backward = KeyEvent.VK_S; //The key held for the second action.
private Robot robo;
public MineBot()
{
}
private void CreateGUI()
{
try
{
robo = new Robot();
}
catch (AWTException e)
{
JOptionPane.showMessageDialog(null, "MineBot encountered an error and will now close.",title, 2);
System.exit(0);
}
frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(250,150));
button = new JButton("Start");
button.setBackground(Color.RED);
button.addActionListener(this);
button.setActionCommand("button");
frame.add(button);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "<HTML><CENTER>Welcome to MineBot! If you have any ideas<br> for additional features or programs, please<br> email me at <a color=#fff>[email protected]</a>!</CENTER</HTML>",title, -1);
}
private void StartMoveLoop() throws InterruptedException
{
sysTime = System.currentTimeMillis();
waitTime = sysTime + delay;
while(true)
{
if(isMoving)
{
sysTime = System.currentTimeMillis();
if(sysTime>waitTime)
{
waitTime = sysTime + delay;
robo.keyPress(forward);
Thread.sleep(holdDelay);
robo.keyRelease(forward);
Thread.sleep(wait);
robo.keyPress(backward);
Thread.sleep(holdDelay);
robo.keyRelease(backward);
}
}
}
}
public void run() throws InterruptedException
{
CreateGUI();
StartMoveLoop();
}
public void actionPerformed(ActionEvent a)
{
if(a.getActionCommand().equals("button"))
{
if(isMoving)
{
button.setBackground(Color.RED);
button.setText("Start");
isMoving = false;
}
else
{
button.setBackground(Color.GREEN);
button.setText("Stop");
isMoving = true;
}
}
}
}
他們GUI會彈出,我可以按一下按鈕但是沒有按鍵進行了模擬。任何幫助將不勝感激!
我認爲所選擇的答案應該是dileep,老實說... – Gianmarco
@Zach M構建路徑意味着將jar添加到項目中。在編譯Java項目以發現相關類時使用Java構建路徑。這就是你如何將Jars添加到項目中。 – Dileep
雖然您不必分別添加庫。這是我在末端的elipse中的錯誤配置。它現在自動完成。 –