当试图调用git命令时,在Java的正常命令行中正确执行,我得到一个奇怪的结果:它什么都不输出.
例如,如果我尝试运行此:
public class GitTest {
public static void main(String args[]) throws IOException{
String command = "git clone http://git-wip-us.apache.org/repos/asf/accumulo.git";
Process p = Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
String text = command + "\n";
System.out.println(text);
while ((line = input.readLine()) != null) {
text += line;
System.out.println("Line: " + line);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我没有输出(除了之前打印的命令).好像git还在下载一些东西,但是并没有告诉我.也许它会在完成之后输出所有内容(所以正常的git调用输出,准备好了多少,并且每次更改此行 - 可能因为这样,BufferedReader无法读取已完成的行,因此无法输出它).
是否有任何解决方法,让这个工作?
我目前正面临着泽西和杰克逊的问题,我无法找到解决方案:当我试图从JSON序列化一个POJO作为Jersey-Endpoint中的POST参数时,如果我调用它会返回错误来自一个uberjar.如果我在从eclipse启动main方法后使用相同的wget-call,一切正常,我得到了预期的答案.我在使用jersey和post-parameter应用程序类型时搜索了其他有问题的人,比如错误415不支持的媒体类型:POST如果JSON没有达到REST,但是如果XML和JAX-RS会这样做:如何自动序列化集合时返回一个Response对象?,但主要的错误是他们没有在通话中指定标题或使用错误的@ Consumes-tags,我没有.根据我的研究,没有人有类似的问题,当服务器从eclipse启动时调用工作,但是当服务器从外部启动时没有工作.
启动服务器的类如下:
public class ServerStarter {
public static final String BASE_URI = "http://localhost:8282/test/";
public static void main(String[] args) throws IOException {
final ResourceConfig rc = new ResourceConfig().packages("starter");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
System.out.println(String.format("Drücke Enter um Server zu beenden.", BASE_URI));
System.in.read();
server.stop();
}
}
Run Code Online (Sandbox Code Playgroud)
而Endpoint看起来像这样:
@Path("testme")
public class Endpoint {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String testMe(Parameters ep) {
return ep.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
而Parameters-class应该是POJO,如下所示:
public class Parameters {
private int x;
public int getX() {
return x;
} …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在一个maven-build中使用Sigar,它每次都会说:
"org.hyperic.sigar.SigarException:java.library.path中没有libsigar-x86-linux.so"
我已经使用mvn install将Sigar安装到maven:install-file -DgroupId = org.hyperic -DartifactId = sigar -Dversion = 1.6.4 -Dpackaging = jar -Dfile = sigar.jar(其中sigar.jar只是一个jar org文件夹中的文件,以及与lib文件夹中的东西的maven依赖关系),但是它找不到.so文件.
我试图找到答案,大多数人说应该解压缩文件,如在maven中解压缩依赖.解压缩(在通过install:install-file安装其他内容之后)确实可以正常工作,但该文件根本不包含在路径中.
然后我试图在构建路径中找到包含文件的东西,所以我做了类似这样的事情:使用本机库进行Surefire JUnit测试(我想在测试中使用sigar),但这也没有改变任何东西.我已经尝试了许多不同的文件夹,甚至添加文件本身而不是它在库路径中的文件夹,但即便如此:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>once</forkMode>
<argLine>-Djava.library.path=${project.build.directory}/lib/libsigar-x86-linux.so</argLine>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
不起作用,但文件显然在那里.我正在使用maven 2.2.1.
有没有人暗示如何在这种情况下使sigar工作?
在此先感谢DaGeRe
在尝试JavaFX时,我目前遇到自动完成问题.我有一个标准的maven项目,Java 8设置为源和目标:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这是正确识别的,我可以使用Stream API的自动完成等.
一些线程,例如Eclipse Swing Project中的如何使用JavaFX,表明jfxrt是使用JavaFX所必需的.Eclipse在/ usr/lib/jvm/java-8-oracle /下使用正确的JVM,它在/ usr/lib/jvm/java-8-oracle/jre/lib/ext/jfxrt中找到了正确的jfxrt.jar.罐.如果我手动打开(在包资源管理器中)JRE系统库 - > jfxrt.jar - > javafx.embed.swing我看到JFXPanel正在那里铺设.
然而,当我在输入后点击Strg + Space时JFXPanel,它只告诉我创建一个具有此名称的类.即使我写import javafx.embed.swing它只是建议我写import javafx.embed.swing.*这个包而不是任何类.
这种行为对我来说似乎很尴尬.任何人都可以告诉我,为什么eclipse无法完成这个或我能做些什么来防止这个问题发生?
当使用带有surefire和Cobertura的JUnit-Tests来构建我的项目时,通常,一切正常.但是当我最近添加了一个可以通过某些测试抛出(并且被排除)的异常时,maven总是告诉我:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project backend-server: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: There was an error in the forked process
[ERROR] java.lang.NoClassDefFoundError: de/unileipzig/irpsim/backend/simulation/TimerowTooShortException
[ERROR] at java.lang.Class.getDeclaredMethods0(Native Method)
[ERROR] at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
[ERROR] at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
[ERROR] at java.lang.Class.getMethod0(Class.java:3018)
[ERROR] at java.lang.Class.getMethod(Class.java:1784)
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod(ReflectionUtils.java:57)
[ERROR] at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isSuiteOnly(JUnit3TestChecker.java:64)
[ERROR] at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isValidJUnit3Test(JUnit3TestChecker.java:59)
[ERROR] at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.accept(JUnit3TestChecker.java:54)
[ERROR] at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.accept(JUnit4TestChecker.java:52)
[ERROR] at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:97)
[ERROR] at org.apache.maven.surefire.junit4.JUnit4Provider.scanClassPath(JUnit4Provider.java:222)
[ERROR] at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:107)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[ERROR] Caused by: …Run Code Online (Sandbox Code Playgroud) 当我尝试使用 Java 17 运行 AspectJ 检测时,总是会收到如下错误:
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initializeForJava11(ClassLoaderWeavingAdaptor.java:1069)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.defineClass(ClassLoaderWeavingAdaptor.java:1096)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.access$300(ClassLoaderWeavingAdaptor.java:66)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor$SimpleGeneratedClassHandler.acceptClass(ClassLoaderWeavingAdaptor.java:150)
at org.aspectj.weaver.tools.WeavingAdaptor$WeavingClassFileProvider$1.acceptResult(WeavingAdaptor.java:917)
at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1431)
at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1192)
at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:549)
at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:385)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:115)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:51)
at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:780)
at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:675)
Caused by: java.lang.IllegalAccessException: module java.base does not open …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在eclipse mars中获取Java文件的git注释,以查看何时更改了一行.在Luna,这有效(并且仍然有效)Team -> Show annotations.在火星上,这对我不起作用.(还有在重新安装后和另一台计算机上).对于其他文件,例如maven项目的pom.xml,这是有效的.除了这个问题之外,该项目在eclipse中工作和编译很好,并且是基于eclipse中的pom.xml创建的.此外,当通过创建项目时mvn eclipse:eclipse,显示注释不起作用.
我已经阅读了设置Ignore whitespace changes和Preferences > General > Editors > Text Editors > Annotations > Errors > Show in > Vertical ruler(显示注释无效),这是正确的.关闭并重新打开Java透视图也不起作用(https://www.eclipse.org/forums/index.php/t/1011988/).我找不到任何其他关于此的线索.
是否有一些我缺少的Java配置,或者这是一个日食错误?