Что я делаю не так в своем коде бота PIRC?
Я продолжаю получать эту ошибку
1428460892508 :Monstarules!webchat@ool-43563441.dyn.optonline.net PRIVMSG #botte
ster :!pc.babel
1428460892510 ### Your implementation of PircBot is faulty and you have
1428460892510 ### allowed an uncaught Exception or Error to propagate in your
1428460892511 ### code. It may be possible for PircBot to continue operating
1428460892511 ### normally. Here is the stack trace that was produced: -
1428460892511 ###
1428460892511 ### java.lang.NoClassDefFoundError: org/jsoup/Jsoup
1428460892512 ### at MyBot.onMessage(MyBot.java:20)
1428460892512 ### at org.jibble.pircbot.PircBot.handleLine(PircBot.java:99
0)
1428460892512 ### at org.jibble.pircbot.InputThread.run(InputThread.java:9
2)
1428460892512 ### Caused by: java.lang.ClassNotFoundException: org.jsoup.Jsoup
1428460892513 ### at java.net.URLClassLoader.findClass(URLClassLoader.java
:381)
1428460892513 ### at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
1428460892513 ### at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.j
ava:331)
1428460892514 ### at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
1428460892514 ### ... 3 more
из следующего кода.
import org.jibble.pircbot.*;
import org.jsoup.*;
import org.jsoup.helper.*;
import org.jsoup.nodes.*;
import org.jsoup.select.*;
import java.io.*;
public class MyBot extends PircBot {
public MyBot() {
this.setName("^MonstaBot^");
}
public void onMessage(String channel, String sender, String login, String hostname, String message) {
if(sender.equalsIgnoreCase("monstarules") && message.equalsIgnoreCase("!quit")){
quitServer("Good bye!");
}
if(message.equalsIgnoreCase("!pc.babel")) {
String playerList = new String();
Document doc = null;
try {
doc = Jsoup.connect("http://aos075.aloha.pk:34886/").get();
String text = doc.html();
FileWriter fw = new FileWriter("temp1.txt");
fw.write(text);
fw.close();
BufferedReader br = new BufferedReader(new FileReader("temp1.txt"));
for(int i = 0; i < 103; ++i)
br.readLine();
text = br.readLine();
text = text.trim();
text = text.replaceAll("<br>", "").replaceAll("<p>", "").replaceAll("</p>", "");
text = text.replace("Hello! Welcome to the status server for aloha.pk tower of babel. ", "");
int stlg = text.length() - 1;
for(int i = (stlg - 22); stlg > i; i++) {
String tw = "" + text.charAt(i);
playerList = playerList + tw;
}
sendMessage(channel, playerList);
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
По некоторым причинам я чувствую, что это очень просто. Исходный код, который я написал, который работает:
import java.io.*;
import org.jsoup.*;
import org.jsoup.helper.*;
import org.jsoup.nodes.*;
import org.jsoup.select.*;
public class Scraper {
public static void derp() throws IOException {
String playerList = new String();
Document doc = null;
try {
doc = Jsoup.connect("http://aos075.aloha.pk:34886/").get();
}
catch (IOException e) {
e.printStackTrace();
}
String text = doc.html();
FileWriter fw = new FileWriter("temp1.txt");
fw.write(text);
fw.close();
BufferedReader br = new BufferedReader(new FileReader("temp1.txt"));
for(int i = 0; i < 103; ++i)
br.readLine();
text = br.readLine();
text = text.trim();
text = text.replaceAll("<br>", "").replaceAll("<p>", "").replaceAll("</p>", "");
text = text.replace("Hello! Welcome to the status server for aloha.pk tower of babel. ", "");
int stlg = text.length() - 1;
for(int i = (stlg - 22); stlg > i; i++) {
String tw = "" + text.charAt(i);
playerList = playerList + tw;
}
System.out.print(playerList);
}
public static void main(String[] args) throws IOException {
derp();
}
}
Исходный код работает, однако всякий раз, когда я пытаюсь сделать его методом и вставить его в бот-код, я всегда получаю ошибки, и когда я их исправляю, всплывающее окно появляется, когда я пытаюсь вызвать триггер для !pc.babel
, Может кто-нибудь помочь мне понять ошибку?
1 ответ
Решение
Эта ошибка является ключевой, java.lang.NoClassDefFoundError: org/jsoup/Jsoup
, Это означает, что Jsoup JAR отсутствует в вашем пути к классам приложений. Как вы запускаете и запускаете свой бот? Чем это отличается от того, как вы запускаете и запускаете свой оригинальный код?