我正在尝试创建客户端 - 服务器架构,我只想使用javac来编译我的代码。我想要这些目录树:
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}">
<ProjectProperties HostName="Word" HostPackage="{29A7B9D7-A7F1-4328-8EF0-6B2D1A56B2C1}" OfficeVersion="" VstxVersion="4.0" ApplicationType="Word" Language="cs" TemplatesPath="VSTOTemplates" DebugInfoExeName="#Software\Microsoft\Office\14.0\Word\InstallRoot\Path#WINWORD.EXE" DebugInfoCommandLine="/w" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
<Host Name="Word" GeneratedCodeNamespace="my_namespace_here" PublishedHash="AAAAAAAAAAAAAAA2FBF2B7EA72250886FF164DE6" IconIndex="0">
<HostItem Name="ThisAddIn" Code="ThisAddIn.cs" CanonicalName="AddIn" PublishedHash="595051696E85B8CAE7EDD3B5EDE7B729864BC855" CanActivate="false" IconIndex="1" Blueprint="ThisAddIn.Designer.xml" GeneratedCode="ThisAddIn.Designer.cs" />
</Host>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
我想在服务器中使用Constant和Packet类,而不是在客户端,但是使用javac我无法做到。我真的无法理解包和导入关键字的工作原理。例如,我无法理解为什么下面的代码是错误的:
小型服务器代码:
/Project/Server/src/Server.java
/ClientConnection.java
/bin/Server.class
/ClientConnection.Class
/Global/src/Constants.java
/Packet.java
/bin/Constants.class
/Packet.Class
/Client/src/(it doesn't matter at the moment)
/bin/(it doesn't matter at the moment)
编译命令和相对错误:
import Global.src.Constants;
import Server.src.*
public class Server extends ThreadPoolExecutor{
private Iterator<ClientConnection> iterator;
private NodeServer[] map;
private ServerSocket listener;
private ArrayList<ClientConnection> clients;
private HashSet<ClientConnection> clientsDisconnected;
任何人都可以帮助我拥有之前描述的目录结构吗?
提前谢谢!
贝壳我喜欢你的解决方案,但我不明白如何应用它。我创建了common.jar文件,但我不知道如何导入它。此外,我还不知道是否需要创建一个包。你能给我任何澄清吗?
答案 0 :(得分:0)
尝试使用多个文件。
javac file1.java file2.java (space is needed b/w file names)
或当前目录中的所有文件
javac *
答案 1 :(得分:0)
按照以下方式行事。在您的情况下,您的代码具有依赖性(服务器依赖于全局,客户端可能依赖于全局和服务器)。你需要按顺序编译。
javac -d Project/Global/bin Project/Global/src/*.java
javac -d Project/Server/bin -cp Project/Global/bin Project/Server/src/*
这样,全局代码将放在bin中,并将在服务器编译期间通过类路径使用。
如果你想使用javac并且你的源中有嵌套目录,你可以使用find
find Project/Global/src "*.java" -exec javac -d Project/Global/bin {} \;
至于错误:
Server.java:1: error: cannot access Constants
import Global.src.Constants;
我想你想要略有不同的源结构。 E.g。
Project
+-Global
+-src
+-some_package
然后,在Constants.java中你可以放
/* Constants.java */
package some_package;
public class Constants { ... }
然后,在您要导入的代码中
import some_package.Constants;