我会尽可能地简短而重要,但这是一个复杂的问题.我正在Linux平台上用Java编写,无论价值多少.
目标的简短版本:我想要一个名为的抽象类Client,它充当客户端连接的通用容器.Client应该对每个连接进行线程化.我也有一些半测试的代码,它以类似的编码方式与服务器相对应.摘要Client应该被实现为更有形和可实现的东西.在我的例子中,我有一个被调用的类FileClientGui,它使用从服务器接收文件内容并显示它们的基本方法来扩展Client和覆盖所有Client的抽象方法.摘要Client本身就是一个扩展,这使事情变得更加复杂java.lang.Thread.
所以这是我的通用术语文件结构:
/class/path/lib/client/Client.java
/class/path/com/fileclient/FileClientGui.java
这两个文件都引用了其他几个自定义类,但我没有收到任何错误.如果我需要发布这些项目的代码,请告诉我,我会发布它们.
所以我在终端上运行这个很长的javac命令,设置classpath和build目录以及所有需要编译的相关文件.我收到的任何代码的唯一错误是:
com/fileclient/FileClientGui.java:26: com.fileclient.FileClientGui is not abstract and does not override abstract method cleanClients() in lib.client.Client
Run Code Online (Sandbox Code Playgroud)
我的代码(见下文)清楚地实现了Client.java中定义的方法和所有其他抽象方法.我搜索了互联网,看起来大多数遇到这种错误的人都试图做一些像实现一样的东西ActionListener,并对这个实现感到困惑,而且很多时候,这只是一个简单的拼写或大写问题.我已经遍及我的代码,以确保这不是一个简单的"oops"问题.我怀疑它实际上是我的类的名称和某些其他类的名称之间的某种冲突,这些类在某种程度上最终出现在我的类路径或Java的本机框架/库中,但我找不到任何明显的东西.
无论如何,这是我的代码.
Client.java:
package lib.client;
import lib.clientservercore.Connection;
import lib.simplefileaccess.Logger;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.lang.Thread;
/**
*
* @author Ryan Jung
*/
public abstract class Client extends Thread {
ArrayList<Connection> connections;
boolean isRunning;
Logger log;
public Client (String logFile) …Run Code Online (Sandbox Code Playgroud)