2011-05-23 56 views
0

编译Java对于windows我只是用一个批处理脚本来编译我的程序:问题在CentOS 5.6

@echo off 
title Building... 
echo Building Server - please wait... 
echo --------------------------------------- 

set javac="C:\Program Files\java\jdk1.6.0_24\bin\javac.exe" 

set libs=bin; 

set dirs=src\server\*.java 
set dirs=%dirs% src\server\commands\*.java 
set dirs=%dirs% src\server\components\*.java 
set dirs=%dirs% src\server\item\*.java 
set dirs=%dirs% src\server\net\*.java 
set dirs=%dirs% src\server\randomevent\*.java 
set dirs=%dirs% src\server\minigames\*.java 
set dirs=%dirs% src\server\minigames\trawler\*.java 
set dirs=%dirs% src\server\minigames\trawler\game\*.java 
set dirs=%dirs% src\server\quests\*.java 
set dirs=%dirs% src\server\skills\runecrafting\*.java 
set dirs=%dirs% src\server\skills\slayer\*.java 
set dirs=%dirs% src\server\tasks\*.java 
set dirs=%dirs% src\server\tasks\net\*.java 
set dirs=%dirs% src\server\threading\*.java 

%javac% -classpath %libs% %dirs% -d bin 
echo --------------------------------------- 
title Buld complete. 
echo Build complete. 
pause 

一切编译罚款。 所以我在我的项目移动到我的CentOS的VPS,并尝试使用bash脚本

echo Building... 
echo Building Server - please wait... 
echo --------------------------------------- 

libs=bin 
dirs=src/server/*.java 
dirs=$dirs src/server/commands/*.java 
dirs=$dirs src/server/components/*.java 
dirs=$dirs src/server/item/*.java 
dirs=$dirs src/server/net/*.java 
dirs=$dirs src/server/randomevent/*.java 
dirs=$dirs src/server/minigames/*.java 
dirs=$dirs src/server/minigames/trawler/*.java 
dirs=$dirs src/server/minigames/trawler/game/*.java 
dirs=$dirs src/server/quests/*.java 
dirs=$dirs src/server/skills/runecrafting/*.java 
dirs=$dirs src/server/skills/slayer/*.java 
dirs=$dirs src/server/tasks/*.java 
dirs=$dirs src/server/tasks/net/*.java 
dirs=$dirs src/server/threading/*.java 

javac -classpath $libs $dirs -d bin 
echo --------------------------------------- 
title Buld complete. 
echo Build complete. 

编译和我一定是做错了什么。我得到这些错误:

有人可以帮我弄清楚我做错了什么吗?有语法错误吗?

+5

我强烈建议你试用Apache Ant。这是为了这样的事情。 – vbence 2011-05-23 21:09:46

回答

1

您需要在所有分配的右侧引用引号,例如,

 
dirs="$dirs src/server/commands/*.java" 

2

不知道为什么通配符没有被扩展,但dirs =行是无效的语法;你需要引用右侧。鉴于奇怪的错误信息,我会怀疑bash是否被用来执行脚本。你确定它是?

在任何情况下,oy。这是编译你的代码的一种疯狂的方式。使用Antmake,他们会让你的生活变得更容易。

+0

+1用于提示构建工具。 – 2011-05-23 21:17:15

+1

错误信息是因为bash会读取分配到空间,然后尝试在空间后面执行所有操作,就好像它是一个命令 – frankc 2011-05-23 21:17:28

+0

但是它仍然会首先扩展通配符,就是这样。我不知道为什么它不会。 – 2011-05-23 21:21:07