需要有关如何设置包结构和项目的帮助

时间:2010-05-29 06:01:11

标签: java package-structuring

我是Java新手,正在制作许可证生成器。这是我目前的设置。

com.example.licensegenerator.client (used by the client application)
   :LicenseLoader (no Main method)
   :LicenseDownloader (no Main method)

com.example.licensegenerator.server.keys (used by the server)
   :ProductKeyGenerator(Main method)

com.example.licensegenerator.server.license (used on the server also)
   :LicenseGenerator(Main method)

com.example.licensegenerator.lib (Shared classes between client and server)
    :Contants (no main)

现在我有几个问题。

  1. 在单个项目中有多个main()方法可以吗?我能将它们编译成不同的.jar文件吗? (在这种情况下,我需要两个不同的服务器罐)

  2. 有没有更好的方法来设置软件包?

  3. 一个完全不相关的问题,除了异常之外,最好是立即处理它们或抛出它们并让主方法捕获它们(如果发生错误,程序无法恢复)

2 个答案:

答案 0 :(得分:0)

以下是答案。

  1. 如果你有多个带有main方法的类,那也没关系。只需要指定执行时首先执行的类。

    java [起始类完全限定名称]

  2. 此外,您可以将类打包到多个jar文件中。请参阅

    中的jar命令结构

    http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/jar.html

    在此,您可以指定要打包到jar中的类。

    2.看来您的包装结构没问题,无需更改。

    3.异常处理取决于上下文。例如,如果它是已知的异常,并且如果要向用户发送消息,则更好地在类本身中处理它,但如果它是未知异常,则将其抛出并在main中处理它,您可能希望打印堆栈跟踪。 / p>

答案 1 :(得分:0)

当您提供代码(作为JAR)时,您需要确保仅将客户端代码提供给客户端。这可能意味着最好将其放在一个单独的模块中;我经常使用的一个技巧是将共享代码放在共享模块中(可能或可能是或可能不是内部的多个包),然后具有依赖于共享模块的独立客户端和服务器模块。像Maven这样的工具使这很容易做到。

永远不要一次在多个模块中定义包。这只是痛苦和困惑。