Java-错误 : Could not find or load main class

标签 java ubuntu terminal ubuntu-16.04

当我尝试从终端运行 java 文件时遇到错误...

java版本...

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

javac版本

javac 1.8.0_181

我有一个java文件名Test4main .

我正在运行此命令来创建 java class

/opt/Tests/Test4/src/test4> javac -cp "/opt/glassfish5/glassfish/lib/*" 
Test4.java

它工作成功,我得到 Test4.class文件

现在我正在尝试运行java命令:

/opt/Tests/Test4/src/test4> java -cp "/opt/glassfish5/glassfish/lib/*" Test4

并得到

Error: Could not find or load main class Test4

还有

/opt/Tests/Test4/src> java -cp "/opt/glassfish5/glassfish/lib/*" test4.Test4

仍然Error: Could not find or load main class Test4

还有

/opt/Tests/Test4/src/test4> java -cp "/opt/glassfish5/glassfish/lib/*" 
Test4.class

仍然错误:无法找到或加载主类 Test4

还有

/opt/Tests/Test4/src> java -cp "/opt/glassfish5/glassfish/lib/*" 
test4.Test4.class

仍然错误:Could not find or load main class Test4

您可以在下面找到我的类(class):

package test4;



import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.Queue;
import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSException;
import javax.jms.JMSProducer;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
*
* @author zion
*/
public class Test4 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws NamingException {

    Context initialContext = Test4.getInitialContext();

    ConnectionFactory connectionFactory = (ConnectionFactory)initialContext.lookup("jms/connection");

    JMSContext jMSContext =  connectionFactory.createContext();
    Queue myQueue = (Queue)initialContext.lookup("jms/myQueue");
    JMSProducer jMSProducer = jMSContext.createProducer();
    jMSProducer.send(myQueue, "Hi,Zion");
    System.out.println("work work work wrok wrok");
}



 public static Context getInitialContext() throws NamingException{
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.impl.SerialInitContextFactory");
    env.put(Context.STATE_FACTORIES, "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
    env.put(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
    env.put("org.omg.CORBA.ORBInitialHost", "IP");
    env.put("org.omg.CORBA.ORBInitialPort", "Port");

    return new InitialContext(env);
}

}

文件夹内:

/opt/Tests/Test4/src/test4# ls
Test4.class  Test4.java

最佳答案

您需要将 Test4 类文件包含到类路径中。

假设您的 Test4.class 文件位于 /opt/Tests/Test4/src/test4 并且完全限定名称为 test4.Test4 那么您应该执行以下操作:

/opt/Tests/Test4/src> java -cp "/opt/glassfish5/glassfish/lib/*":"."test4.Test4

请注意,终端的目录是/opt/Tests/Test4/src 而不是/opt/Tests/Test4/src/test4

希望这有帮助

关于Java-错误 : Could not find or load main class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332838/

相关文章:

bash - move 具有相同名称的多个文件并即时重命名它们

java - Objectify 无法保存@Embedded 字符串列表

java - Javers 比较不同顺序的列表

java - 通过括号转换为字符串会导致 Android 崩溃

c - stdin 是否包含回车 (\r) 字符?

git - 如何通过从终端运行命令来打开指向我的 Github 存储库的链接?

java - 处理空列表 - 使用 ListFragment 或 Fragment+ListView 更好?

linux - 新鲜蛤蜊 : symbol lookup error: freshclam: undefined symbol: print_version, 版本 FRESHCLAM_PRIVATE

c - 如何使用 ncurses.h 库 "blink"在 C 中创建字符

ubuntu - 哪个 PETSc 和 MPI 用于双核系统上的 Ubuntu