我正在运行一个debian java服务器,它需要发送和接收EventObject和PostObject类型的对象(例如可序列化)。这些文件已放在.jar文件SharedModels.jar中,并在客户端和服务器上使用。
当尝试在debian上编译时,我得到了输出
<!-- ko foreach: answers -->
<input type="radio" data-bind="checked: selected, checkedValue: 1">
<!-- /ko -->
在Windows安装(Eclipse)上,使用
ServerThread.java:10: error: package Models does not exist
import Models.EventObject;
^
ServerThread.java:11: error: package Models does not exist
import Models.PostObject;
^
Database.java:100: error: cannot find symbol
ArrayList<PostObject> posts = new ArrayList<>();
^
工作正常(包括通过Eclipse的外部Jar)。
我如何让java明白我想在Debian上使用这些类?
我已经将jar的位置添加到/ etc / environment中的classpath。
罐子的结构可能有问题吗?例如它由一个包含两个类的包组成?
提前致意并表示感谢
编辑:编译好,但是当调用该方法时,服务器不再识别该类。这是输出: import Models.EventObject;
import Models.PostObject;
我已经明白这是因为JVM确实在编译时识别了类,但在运行时没有识别出来。或者类路径有问题。实际的.jar的名称是否需要任何命名来填充其中包含的包?我需要做些什么来解决这个问题?
答案 0 :(得分:1)
没有。罐子是便携式的,它们之间没有区别。如果他们在Windows上工作,他们也应该在linux上工作。
您的错误消息也非常清楚地显示,问题不在于坏jar,而是在类路径中不存在。可能在类路径设置中存在一个小问题,可能是:
/etc/environment
中的CLASSPATH语法是否有效?在Windows上,它必须用:
分隔,而在Linux上则有;
。/etc/environment
仅在登录shell中设置,之后您是否已登录/注销?无论如何,你可以给你的javac
一个-verbose
标志,它会显示从哪里开始加载你的罐子。