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
据说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