Java 提示在 Windows 上有效,但在 Ubuntu 上无效

Java prompt that work on Windows but not Ubuntu

据说Java不管OS都是可移植的。但这是我的疑问: 为什么 java 提示在 windows 中完美运行,但在我的情况下,无法执行 java 提示。

我的文件夹结构如下:

c:
--|temp
-----|JavaSDKv2
--------|com
-----------|impinj
--------------|octanesdk
-----------------|samples
--------------------|(.java files)
--------------------|(.class files)
--------|OctaneSDKJava-1.20.2.240-jar-with-dependencies.jar

示例: (在windows8,cmd中)

    C:\temp>cd JavaSDKv2
    C:\temp\JavaSDKv2>javac com\impinj\octanesdk\samples\*.java    -classpath      OctaneSDK
    Java-1.20.2.240-jar-with-dependencies.jar

    C:\temp\JavaSDKv2>

(因此没有错误,每个定义了 class 的 java 文件现在对于 .[=42= 中定义的每个 class 都有一个 .class 文件] 文件 )





C:\temp\JavaSDKv2>java -Dhostname=192.168.2.203 -classpath OctaneSDKJava-1.20.2. 240-jar-with-dependencies.jar;. com.impinj.octanesdk.samples.RfDoppler 
Connecting to 192.168.2.203 
log4j:WARN No appenders could be found for logger (org.apache.mina.filter.execut or.ExecutorFilter). 
log4j:WARN Please initialize the log4j system properly.

Press Enter to exit.  
EPC: 0100 0000 0000 9950 0000 0000 Reader_ip:    192.168.2.203 doppler: .5625

EPC: 0100 0000 0000 9950 0000 0000 Reader_ip: 192.168.2.203 doppler: 3.0

EPC: 0100 0000 0000 9950 0000 0000 Reader_ip: 192.168.2.203 doppler: -6.6875 

(这没有任何问题)

然后我使用Ubuntu(在虚拟框中)。我检查连接。

    lloret@lloret-VirtualBox:~/temp/JavaSDKv2$ ping 192.168.2.203
    PING 192.168.2.203 (192.168.2.203) 56(84) bytes of data.
    64 bytes from 192.168.2.203: icmp_seq=1 ttl=63 time=2.56 ms
    64 bytes from 192.168.2.203: icmp_seq=2 ttl=63 time=1.64 ms
    64 bytes from 192.168.2.203: icmp_seq=3 ttl=63 time=1.56 ms
    64 bytes from 192.168.2.203: icmp_seq=4 ttl=63 time=1.34 ms
    64 bytes from 192.168.2.203: icmp_seq=5 ttl=63 time=1.60 ms

然后我检查 java 版本(java -version)

lloret@lloret-VirtualBox:~/temp/JavaSDKv2$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.14.04.1)
OpenJDK Client VM (build 24.79-b02, mixed mode, sharing)

 lloret@lloret-VirtualBox:~/temp/JavaSDKv2$ javac com/impinj/octanesdk/samples/*.java -classpath OctaneSDKJava-1.20.2.240-jar-with-dependencies.jar
lloret@lloret-VirtualBox:~/temp/JavaSDKv2$

(这会创建 .class 文件)


lloret@lloret-VirtualBox:~/temp/JavaSDKv2$ java -Dhostname=192.168.2.203 -classpath OctaneSDKJava-1.20.2.240-jar-with-dependencies.jar com.impinj.octanesdk.samples.RfDoppler
Error: Could not find or load main class com.impinj.octanesdk.samples.RfDoppler
lloret@lloret-VirtualBox:~/temp/JavaSDKv2$

奇怪的是 java 没有找到任何类型的 .class 文件。 我的猜测是这与包裹有关。 当然,如果有人编写 helloworld.java 代码并执行 helloworld.class,您会看到 "Hello, World!"

在 ubuntu 你的默认类路径不包含当前目录,所以这样试试:

lloret@lloret-VirtualBox:~/temp/JavaSDKv2$ java -Dhostname=192.168.2.203 -classpath OctaneSDKJava-1.20.2.240-jar-with-dependencies.jar:. com.impinj.octanesdk.samples.RfDoppler