Если бы я был на Вашем месте, я загрузил бы утилиту соединения с MS: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx и затем отображают Ваш "C:\path" для высказывания, "z:\" и "c:\path2" для высказывания, "y:\". Таким образом, Вы будете уменьшать 4 символа на объект в Вашем classpath
.
set CLASS_PATH=C:\path\a\b\c;C:\path\e\f\g;
set CLASS_PATH=%CLASS_PATH%;C:\path2\a\b\c;C:\path2\e\f\g;
Теперь, Ваш путь к классу будет:
set CLASS_PATH=z\a\b\c;z\e\f\g;
set CLASS_PATH=%CLASS_PATH%;y:\a\b\c;y:\e\f\g;
Это могло бы сделать больше в зависимости от Вашего фактического classpath
.
Уловка, которая сработала для меня, заключалась в использовании Ruby Timeout.timeout, чтобы гарантировать, что FTP-соединение не зависает.
begin
Timeout.timeout(10) do
ftp.getbinaryfile(rmls_path, local_path)
end
# ...
rescue Timeout::Error
errors << "#{thread_num}> File download timed out for: #{rmls_path}"
puts errors.last
rescue
errors << "unable to get file > ftp reponse: #{ftp.last_response}"
# ...
end
Зависание загрузки по FTP приводило к зависанию моих бесед. Теперь, когда потоки больше не висят, я могу использовать более правильный способ работы с потоками:
threads.each { |t| j.join }
, а не уродливый:
# If @last_updated has not been updated on the server in over 20 seconds, wait 3 seconds and check again
while Time.now < @last_updated + 20 do
sleep 3
end
# threads are hanging so joining the threads does not work.
threads.each { |t| t.kill }