Executando o JAVA no Cygwin através do script bash

0

Encontrei um problema com o cygwin em que não consigo executar um arquivo jar com um erro de que o arquivo não pode ser encontrado.

Se fosse mais fácil eu "traduzir" a fonte java no bash, mas infelizmente, devido à funcionalidade implementada, existem alguns obstáculos bastante significativos para conseguir isso, então eu teria que usar o arquivo jar.

Agora, eu fiz uma boa quantidade de pesquisas da minha parte para descobrir como fazer isso, no entanto, não consegui ter sucesso, e é obrigatório que eu use o cygwin.

Veja o que estou tentando fazer essencialmente:

lockfile="$specialfolder/$passedargument.lock
java -jar 'cygpath -w ./cygdrive/driveletter/folder/folder/javafile.jar -joption cygpath -w $lockfile'

eu também tentei com double-ticks, como segue:

pathtooutfile="${some_other_vars}/${that}_${work}.out"
java -jar 'cygpath -w ./cygdrive/driveletter/folder/folder/javafile.jar' -joption 'cygpath -w $lockfile'

Eu também tentei usar o $ JAVA_HOME env var, mas isso não funcionou tão bem. É importante mencionar que as variáveis que estão sendo chamadas no lockfile var são definidas da seguinte forma:

 homedir= "/cygdrive/driveletter/folder/folder"
 specialfolder= "$homedir/foler/$passedargument"
 passedargument= $1 ###argument passed with execution of bash script
 lockfile= "$specialfolder/$passedargument"

O erro que recebo é o seguinte: Erro: não é possível acessar o jarfile Eu modifiquei os direitos de uso para o 777 e isso também não funcionou. Também pode ser importante mencionar que -joption é -aquire ou -release correspondendo ao arquivo de bloqueio desde Uma das coisas que o jar faz é gerenciar múltiplas execuções de script através de um arquivo de bloqueio. Estou um pouco preso assim, qualquer sugestão será muito apreciada. Eu acho que isso pode ser mais um problema do cygwin.

    
por Nikolai Uzunov 10.03.2016 / 09:58

2 respostas

0

Você já tentou cygpath -w -a .....

O -a retorna caminhos absolutos.

por exemplo,

$ cygpath -w ./screenshot.jpg
screenshot.jpg

$ cygpath -w -a ./screenshot.jpg
C:\cygwin64\home\tony\screenshot.jpg
    
por 10.03.2016 / 10:25
0

Se sua expressão

'cygpath -w ./cygdrive/driveletter/folder/folder/javafile.jar'

possui espaços em branco incorporados, você deve colocar aspas duplas em torno dele para que o resultado seja passado para o Java como um único token. Pode ajudar a entender as expressões e os resultados se você ativar o rastreamento do shell, por exemplo, set -x .

Leitura adicional:

por 10.03.2016 / 10:23