` dan yürütülen eğer bu basit bir Java programı var:`System.Console()` döner `null` gradle run`
package me.fornever.javaterminal;
public class Main {
public static void main(String[] args) {
System.out.println("Console: " + System.console());
}
}
Ve bu basit build.gradle
: Ben
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'me.fornever.javaterminal.Main'
gradle --no-daemon run
kullanarak yürütülmesi m, aşağıdaki çıktıyı almak: Iile terminalden çalıştırmak ise
Console: null
, aşağıdaki alıyorum:
Console: [email protected]
Ben Üst süreç stdout'u yönlendirmeyi kullandığında System.console()
null
döndürebilir farkındayım. Yönlendirmeyi devre dışı bırakmak ve konsolu programım için tamamen kullanılabilir hale getirmek için bazı Gradle seçeneği var mı?
Java için bir terminal kitaplığı geliştiriyorum, bu yüzden testlerimi ve yürütülebilir dosyaları stdin/stdout/stderr'de Gradle müdahalesi olmadan çalıştırmak istiyorum.
Lütfen 'un null
olduğunu unutmayın, ancak en belirgin olanıdır. Gerçekte, gradle run
tarafından yürütülen programdan WinAPI WriteConsoleW
işlevine erişmek istiyorum ve bu işlevi System.console()
null
olduğu için aynı işlevi kullanamıyorum. Bu seçenek varsa gerçekten Graberin çıkış yönlendirmesini devre dışı bırakmalıyım.
Ayrıca bu soruyu bir Gradle senaryonun içine değil gradle run
tarafından çağrılan Java programında System.console()
nasıl kullanılacağını sorar, çünkü soru Gradle build null console object farklı olduğuna dikkat edin; Bu konuda farklı şekilde çalıştıklarına inanıyorum çünkü cevapların hiçbiri çalışmam ya da davam için geçerli değil.
* nasıl * test edebilirsiniz '' konsol() 'kullanan bir program? Test girişini gönderemezsiniz ve çıktıyı doğrulayamazsınız, bu yüzden ne test ediyorsunuz? – Andreas
@Andreas Her şeyden önce çalışıyor ve herhangi bir istisna atmadan test ediyorum. İkinci seçenek ise win32 'ReadConsoleOutput' veya 'winpty' gibi bir sarıcı gibi platform bağımlı API’yı kullanmaktır. Windows konsolu için bir sarıcı kitaplığı yazıyorum, bu yüzden platform bağımlı çözümler kullanmak için tamam. – ForNeVeR
Bir web araması yaptığınızda, ne buldun? Bu yinelenen soruyu mu buldunuz? – Andreas