我有一个 git 存储库,当推送到特定分支时,它会将 .java 文件下拉到生产服务器。(工作)我正在使用 openJDK 包运行 Debian 9。(jdk 1.8.0)
我决定在服务器上编译新的 .java 文件,然后执行它们。我的问题是,在将 -cp arg 指定为“lib/*.jar”时,在编译期间我得到:错误包 jar.example.class 不存在 import jar.example.class;
对于从另一个 .lib 文件引用的任何信息的每次引用,依此类推。
重要提示: 我得到的最接近的是这个命令,它不会产生任何输出,但不会编译整个项目。
- javac -classpath "bin:lib/*.jar" -d "bin/" "src/com/ruse/GameServer.java"
例如:在 /server/bin/com/ruse/net/packet/impl/ 中,.class 文件比 /server/src/com/ruse/net/packet/impl/ 中相应的 ItemActionPacketListener.java 文件更旧
- 我在 /home/rsps/server 目录中运行此命令。
- .jar 文件存在于 /home/rsps/server/lib 文件夹中。
- .src 文件存在于 /home/rsps/server/src 文件夹中。
- .bin 文件应在 /home/rsps/server/bin 文件夹中输出。
- “main”类是 src/com/ruse/GameServer.java 中的 void Main
这是文件夹结构的图像:
作为参考,这是我用来运行服务器的命令(有效)
- java -server -Xmx2148m -classpath bin:lib/* com.ruse.GameServer
我尝试以不同的方式提供 -cp 或 -classpath 参数,但是,javac 在编译期间似乎无法引用 .jar 文件。
以下是我尝试过的各种 javac 命令:
javac -classpath "lib/*.jar" -d "bin/" "src/com/ruse/GameServer.java"
javac -sourcepath /home/rsps/server/src/ .java -classpath 类:lib/ .jar -d bin
javac -classpath "lib/*.jar" -d "bin/" -sourcepath "src/" "src/com/ruse/GameServer.java"
javac -cp "lib/:lib/*" -d "bin/" -sourcepath "src/" "src/com/ruse/GameServer.java"
javac -cp .:/lib/*.jar: -d "bin/" "src/com/ruse/GameServer.java"
我希望输出是新的 .class 文件,但是实际结果都是以下的变体:
- javac -classpath "lib/*.jar" -d "bin/" "src/com/ruse/GameServer.java"
结果是:
符号:类 ChannelBuffer
位置:类 PacketBuilder
src/com/ruse/world/World.java:11:错误:com.google.common.util.concurrent 包不存在
导入 com.google.common.util.concurrent.ThreadFactoryBuilder;
^
src/com/ruse/util/Misc.java:26:错误:包 org.jboss.netty.buffer 不存在
导入 org.jboss.netty.buffer.ChannelBuffer;
^
src/com/ruse/util/Misc.java:750:错误:找不到符号
public static String readString(ChannelBuffer buffer) { ^
符号:类 ChannelBuffer
地点:杂项类
src/com/ruse/world/content/dialogue/DialogueManager.java:6:错误:com.google.gson 包不存在
导入 com.google.gson.Gson;
^