Как запустить Java-код в среде Matlab? - PullRequest
1 голос
/ 21 февраля 2012

Я хочу запустить приведенный ниже код Java в Matlab.Он успешно работал в среде JAVA.Я использую

apache-jakarta-commons-net-1.4.1.jar

для запуска этого кода.

Программное обеспечение, которое я использую

MATLAB Version 7.7.0.471 (R2008b)
Operating System: Microsoft Windows Vista Version 6.1 (Build 7600)
Java VM Version: Java 1.6.0_04 with Sun Microsystems Inc. 
     Java HotSpot(TM) Client VM  mixed mode

Мой код Java

import java.io.IOException;
import org.apache.commons.net.TimeTCPClient;// third party class
public final class TimeClient
{

public static final void timeTCP(String host) throws IOException
{
TimeTCPClient client = new TimeTCPClient();
try {
// We want to timeout if a response takes longer than 4 seconds
client.setDefaultTimeout(4000);
client.connect(host);
System.out.println(client.getDate());
}
finally {
client.disconnect();
}
}

public static final void main(String[] args)
{
{
try
{
timeTCP(args[0]);
}
catch (IOException e)
{
e.printStackTrace();
System.exit(1);
}
}

}

}

which timeclient выдал следующую ошибку

Warning: A Java exception occurred trying to load the TimeClient class:
Java exception occurred:
java.lang.UnsupportedClassVersionError: TimeClient : Unsupported major.minor
version 51.0

    at java.lang.ClassLoader.defineClass1(Native Method)

    at java.lang.ClassLoader.defineClass(Unknown Source)

    at java.security.SecureClassLoader.defineClass(Unknown Source)

    at java.net.URLClassLoader.defineClass(Unknown Source)

    at java.net.URLClassLoader.access$000(Unknown Source)

    at java.net.URLClassLoader$1.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.net.URLClassLoader.findClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at java.lang.ClassLoader.loadClassInternal(Unknown Source)

    at java.lang.Class.forName0(Native Method)

    at java.lang.Class.forName(Unknown Source)

    at
    com.mathworks.jmi.OpaqueJavaInterface.findClass(OpaqueJavaInterface.java:470) 
'TimeClient' not found.

1 Ответ

3 голосов
/ 21 февраля 2012

MATLAB, очевидно, использует версию Java, отличную от той, которую вы использовали для компиляции .jar. Обязательно скомпилируйте его с версией Java, используемой внутри MATLAB. Поскольку вы не указали, как вы определили номер версии Java, указанный в вашем вопросе, обязательно наберите

version -java

из командной строки Matlab, а затем используйте эту версию для компиляции .jar. Более подробную информацию можно найти здесь .

...