Java错误:找不到主类

Java错误:找不到主类,java,linux,bash,classpath,cplex,Java,Linux,Bash,Classpath,Cplex,我正试图编译并运行一个java程序,其中包含CLASSPATH&PATH变量,命令如下: javac -classpath path_to_external_jar:. test.java java -Djava.library.path=external_lib_folder -classpath path_to_external_jar:. test test.java代码: package cplextest; import ilog.concert.*; import ilog.c

我正试图编译并运行一个java程序,其中包含
CLASSPATH
&
PATH
变量,命令如下:

javac -classpath path_to_external_jar:. test.java

java -Djava.library.path=external_lib_folder -classpath path_to_external_jar:. test
test.java代码

package cplextest;

import ilog.concert.*;
import ilog.cplex.*;

import java.io.*;
import java.util.*;


//--------------------------------------------------------------------------
//File: examples/src/QPex1.java
//Version 9.0    
//--------------------------------------------------------------------------
//Copyright (C) 2001-2003 by ILOG.
//All Rights Reserved.
//Permission is expressly granted to use this example in the
//course of developing applications that use ILOG products.
//--------------------------------------------------------------------------
//
// Entering and optimizing a QP problem



public class test {
public static void main(String[] args) {
   try {
      IloCplex cplex = new IloCplex();
      IloLPMatrix lp = populateByRow(cplex);

//#ifdef FULLTEST
//      cplex.setParam(IloCplex.IntParam.Threads,
//                     cplex.getMax(IloCplex.IntParam.Threads));
//#endif

      if ( cplex.solve() ) {
         double[] x     = cplex.getValues(lp);
         double[] dj    = cplex.getReducedCosts(lp);
         double[] pi    = cplex.getDuals(lp);
         double[] slack = cplex.getSlacks(lp);

         System.out.println("Solution status = " + cplex.getStatus());
         System.out.println("Solution value  = " + cplex.getObjValue());

         int ncols = lp.getNcols();
         for (int j = 0; j < ncols; ++j) {
            System.out.println("Column: " + j +
                               " Value = " + x[j] +
                               " Reduced cost = " + dj[j]);
         }

         int nrows = lp.getNrows();
         for (int i = 0; i < nrows; ++i) {
            System.out.println("Row   : " + i +
                               " Slack = " + slack[i] +
                               " Pi = " + pi[i]);
         }

         cplex.exportModel("qpex1.lp");
      }
      cplex.end();
   }
   catch (IloException e) {
      System.err.println("Concert exception '" + e + "' caught");
   }
}

static IloLPMatrix populateByRow(IloMPModeler model) throws IloException {
   IloLPMatrix lp = model.addLPMatrix();

   double[]    lb = {0.0, 0.0, 0.0};
   double[]    ub = {40.0, Double.MAX_VALUE, Double.MAX_VALUE};
   IloNumVar[] x  = model.numVarArray(model.columnArray(lp, 3), lb, ub);

   double[]   lhs = {-Double.MAX_VALUE, -Double.MAX_VALUE};
   double[]   rhs = {20.0, 30.0};
   double[][] val = { {-1.0,  1.0,  1.0},
                      { 1.0, -3.0,  1.0} };
   int[][]    ind = { {0, 1, 2},
                      {0, 1, 2} };
   lp.addRows(lhs, rhs, ind, val);

   // Q = 0.5 ( 33*x0*x0 + 22*x1*x1 + 11*x2*x2 - 12*x0*x1 - 23*x1*x2 )
   IloNumExpr x00 = model.prod( 33, x[0], x[0]);
   IloNumExpr x11 = model.prod( 22, x[1], x[1]);
   IloNumExpr x22 = model.prod( 11, x[2], x[2]);
   IloNumExpr x01 = model.prod(-12, x[0], x[1]);
   IloNumExpr x12 = model.prod(-23, x[1], x[2]);
   IloNumExpr Q   = model.prod(0.5, model.sum(x00, x11, x22, x01, x12));

   double[] objvals = {1.0, 2.0, 3.0};
   model.add(model.maximize(model.diff(model.scalProd(x, objvals), Q)));

   return (lp);
}
}
cplextest包;
导入ilog.concert.*;
导入ilog.cplex。*;
导入java.io.*;
导入java.util.*;
//--------------------------------------------------------------------------
//文件:examples/src/QPex1.java
//9.0版
//--------------------------------------------------------------------------
//版权所有(C)2001-2003由ILOG提供。
//版权所有。
//明确授予在中使用此示例的权限
//开发使用ILOG产品的应用程序的课程。
//--------------------------------------------------------------------------
//
//进入并优化QP问题
公开课考试{
公共静态void main(字符串[]args){
试一试{
IloCplex cplex=新的IloCplex();
IloLPMatrix lp=人口基数(cplex);
//#ifdef完整测试
//cplex.setParam(IloCplex.IntParam.Threads,
//getMax(IloCplex.IntParam.Threads));
//#恩迪夫
if(cplex.solve()){
double[]x=cplex.getValues(lp);
double[]dj=cplex.getReducedCosts(lp);
double[]pi=cplex.getDuals(lp);
双[]松弛=cplex.getSlacks(lp);
System.out.println(“解决方案状态=“+cplex.getStatus());
System.out.println(“Solution value=“+cplex.getObjValue());
int ncols=lp.getNcols();
对于(int j=0;j
test.java
位于当前文件夹中。编译进行得很顺利,但是当我运行上面的第二个命令时,出现了错误:
无法找到主类:test。程序将退出。
跳出

有人对这个问题有什么建议吗?

问题在于你们的主课在哪。Java机器无法在中优化类

移除
包cplextest行从类或cplextest子文件夹中删除,并使用命令运行

java -classpath path_to_external_jar:. cplextest.test

如果从根目录运行java程序,则需要指定完全分类的名称

因此,您需要将其作为

java cplextest.test

您可以发布test.java类的代码吗?可能是命名问题。请检查JRE和JRK的版本,它们应该相互匹配。@Chris补充道。谢谢:)尝试使用java-Djava.library.path=external\u lib\u文件夹-classpath path\u to\u external\u jar:。cplextest。test@Nazgul试过了。仍然没有解决:(谢谢你,罗曼!两种方法都能解决问题。挽救了我的一天:p