在编写Java脚本前,需确保CentOS系统已安装JDK并正确配置环境变量。可通过java -version和javac -version验证安装;使用YUM包管理器安装OpenJDK(如sudo yum install java-1.8.0-openjdk-devel),并编辑/etc/profile或用户目录下的.bashrc文件,添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 根据实际安装路径调整
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行source /etc/profile使配置生效。
编写Shell脚本自动化Java编译流程,提升效率。基础示例如下:
#!/bin/bash
# 设置目录与变量
SRC_DIR="src" # 源代码目录
OUTPUT_DIR="bin" # 编译输出目录
PACKAGE_NAME="com.example" # 包名(若有)
# 创建输出目录
mkdir -p $OUTPUT_DIR
# 编译Java文件(支持子目录)
javac -d $OUTPUT_DIR -sourcepath $SRC_DIR $(find $SRC_DIR -name "*.java")
# 检查编译结果
if [ $? -eq 0 ]; then
echo "Compilation successful!"
# 运行程序(需替换MainClass为实际主类)
java -cp $OUTPUT_DIR $PACKAGE_NAME.MainClass
else
echo "Compilation failed!"
fi
优化技巧:
javac -Xincgc减少重复编译时间;javac -J-XX:ParallelGCThreads=4利用多核处理器加速;mvn clean install)或Gradle管理依赖与编译,避免手动处理。编写Shell脚本管理Java应用的启动、停止与状态检查,示例如下(myapp.sh):
#!/bin/bash
APP_NAME="MyJavaApp"
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"
JAR_FILE="myapp.jar" # 应用JAR路径
JAVA_OPTS="-Xms512m -Xmx1024m" # JVM内存设置
PID_FILE="$APP_NAME.pid" # 进程ID文件
# 启动应用
start() {
if [ -f $PID_FILE ]; then
echo "Application is already running (PID: $(cat $PID_FILE))."
exit 1
fi
echo "Starting $APP_NAME..."
nohup $JAVA_HOME/bin/java $JAVA_OPTS -jar $JAR_FILE > /dev/null 2>&1 &
echo $! > $PID_FILE
echo "$APP_NAME started with PID $(cat $PID_FILE)."
}
# 停止应用
stop() {
if [ ! -f $PID_FILE ]; then
echo "Application is not running."
exit 1
fi
echo "Stopping $APP_NAME..."
kill $(cat $PID_FILE) && rm -f $PID_FILE
echo "$APP_NAME stopped."
}
# 检查状态
status() {
if [ -f $PID_FILE ]; then
echo "$APP_NAME is running with PID $(cat $PID_FILE)."
else
echo "$APP_NAME is not running."
fi
}
# 根据参数执行对应操作
case "$1" in
start) start ;;
stop) stop ;;
status) status ;;
*) echo "Usage: $0 {start|stop|status}"; exit 1 ;;
esac
使用说明:赋予执行权限(chmod +x myapp.sh),通过./myapp.sh start启动、./myapp.sh stop停止、./myapp.sh status查看状态。
使用日志框架(如SLF4J+Logback)替代System.out.println,实现日志分级(DEBUG/INFO/WARN/ERROR)与文件输出。示例logback.xml配置:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/app.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
在代码中通过LoggerFactory.getLogger(Class.class)获取Logger实例,记录日志:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClass {
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
public void doSomething() {
logger.info("Starting process...");
try {
// 业务逻辑
logger.debug("Debug information");
} catch (Exception e) {
logger.error("Error occurred: ", e);
}
}
}
注意:确保日志目录(如logs)存在且有写入权限。
通过JVM参数开启远程调试,配合IDE(如IntelliJ IDEA)定位问题。修改启动脚本(如myapp.sh),添加以下参数:
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
步骤:
-Xms初始堆、-Xmx最大堆)、选择垃圾回收器(如G1GC:-XX:+UseG1GC);使用JUnit框架编写单元测试,覆盖核心逻辑。示例测试类:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calc = new Calculator();
assertEquals(5, calc.add(2, 3));
}
}
通过Maven运行测试(mvn test),确保代码变更后功能正常。