2013-06-16 3 views
1

Я работаю над реализацией ЕКА, я изменил один из файлов Java, скомпилирован с помощью командыОшибка: Не удалось найти или загрузить основной класс на один вызов и без ошибок на другой вызов в том же сценарии

javac -cp lib/*:esalib.jar ./src/clldsystem/esa/ESAAnalyzer.java 

и вставить файл .class в соответствующий каталог (esalib.jar/clldsystem/esa) в файле .jar. Также я изменил имя оригинального соответствующего файла .class.

Далее, у меня есть скрипт, питона, который использует команду

java -cp lib/*:esalib.jar clldsystem.esa.ESAAnalyzer param1 param2 

но запустив сценарий питона, команда работает хорошо, когда используется в качестве:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer computer apple' 
args=shlex.split(x) 
p=subprocess.Popen(args) 
p.wait() 

Но дает ошибку: Могли не найти или загрузить основной класс при использовании в качестве:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer word1 word2' 
args=x.split() 
p=subprocess.Popen(args) 
p.wait() 

в том же сценарии. Я читаю переменные word1 и word2 из файла. Зачем это нормально работать в одном месте и давать ошибку в другом? Я проверил использование операторов печати, которые я читаю из файла правильно, поэтому это не должно быть проблемой. Благодаря

здесь подробности того, что случилось:

[email protected]:~/esalib$ python test.py 
['java', '-cp', 'lib/*:esalib.jar', 'clldsystem.esa.ESAAnalyzer', 'bottle', 'apple'] 
index loaded to memory 
bottl 
appl 
vector 1 dimensions: 1782 
vector 2 dimensions: 2766 
0.024397644631615697 
beach 
['people', 'sand', 'desert', 'snow'] 
['java', '-cp', '"lib/*:esalib.jar"', 'clldsystem.esa.ESAAnalyzer', 'word1', 'word2'] 
Error: Could not find or load main class clldsystem.esa.ESAAnalyzer 
beach 
people 
['java', '-cp', '"lib/*:esalib.jar"', 'clldsystem.esa.ESAAnalyzer', 'word1', 'word2'] 
Error: Could not find or load main class clldsystem.esa.ESAAnalyzer 
beach 
sand 

и так далее для каждой итерации

+0

кажется, что ваша проблема с JAVA не с питоном ... можете ли вы пройти более подробный вывод о том, что произошло? – Oz123

+0

@ Oz123: я добавил детали в вопрос – nish

ответ

1

это работает:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer %s %s' % (word1, word2) 
args=shlex.split(x) 
print args 
p=subprocess.Popen(args) 
p.wait()