博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java CLASSPATH 引发的问题
阅读量:6893 次
发布时间:2019-06-27

本文共 803 字,大约阅读时间需要 2 分钟。

# 问题

 

在做 OJ 的时候,由于程序需要编译运行,出于安全性考虑,我选择利用类 ProcessBuilder ,一个通过命令行调用 Java 程序的类。

我在 Eclipse 中或者在 CMD 中执行利用类 ProcessBuilder 运行的程序都没有问题,然后利用 Tomcat 开启服务器厚,调用该程序一直报错。

提示:找不到或无法加载主类 Main。

 

# 排查

 

一般来说先排查输入参数有没有问题,显然能在 CMD 中可以执行的程序,参数不会有问题。

是不是包名的问题?也不是。在 CMD 中调用 OJ 保存下来的程序,是可以运行的。

这就很诡异了。其实那句报错提示很玄乎,因为它包括了两个方面:找不到主类Main,无法加载主类Main

 

# 核心

 

什么情况下会无法加载主类 Main?CLASSPATH 不正确的情况是一种

Tomcat 运行的时候,会自定义 CLASSPATH, 覆盖环境变量的 CLASSPATH。如下图,这是我修改之后的 CLASSPATH,原来的 CLASSPATH 可没有这么多。

 

# 解决

 

在 %TOMCAT_HOME%/bin/setenv.bat 中定义 CLASSPATH 即可。

例如:

SET JAVA_OPTS=-Duser.language=enSET CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%APACHE_TOMCAT_HOME%\lib\servlet-api.jar;%APACHE_TOMCAT_HOME%\lib\tomcat-api.jar;C:\apache-tomcat8.5.9\webapps\onlineJudge\WEB-INF\classes\

 

转载于:https://www.cnblogs.com/Piers/p/6557086.html

你可能感兴趣的文章
Nodejs日志管理log4js
查看>>
python获取昨日日期
查看>>
海康威视 - 萤石云开放平台 js 版
查看>>
关于分销平台
查看>>
jquery实用的一些方法
查看>>
质数方阵
查看>>
jQuery $.each用法
查看>>
C语言结构体指针成员强制类型转换
查看>>
基于域的无线安全认证方案
查看>>
Thread类常用方法
查看>>
几乎所有编程语言的hello, world程序(3)
查看>>
CentOs 设置静态IP 方法
查看>>
Nginx内置变量以及日志格式变量参数详解
查看>>
Docker 命令
查看>>
如何在andorid native layer中加log function.【转】
查看>>
杂七杂八的文档资料。
查看>>
C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏...
查看>>
如何在Hyper-V虚拟中安装Hyper-V角色
查看>>
通用XPE操作系统
查看>>
Opentracing Zipkin
查看>>