gpt4 book ai didi

Java:ConnectException/无法找到或加载主类

转载 作者:可可西里 更新时间:2023-11-01 17:36:12 24 4
gpt4 key购买 nike

所以简而言之,我只是想得到一个小的工作骨架程序,我可以用它来了解 Http 通信并“感觉”我的方式来弄清楚我最终需要什么来构建一个更大的程序我正在努力。此处的这段特定代码实际上只是 Apache 库示例的截断版本。我可以编译 Apache 网站上列出的示例,但它们无法正常运行,出现“java.net.ConnectException”。我认为这与 Windows c-blocking 这样的程序建立连接有关,我需要以管理员身份运行它。然后我尝试获取代码并将其放入一个可执行的 jar 文件中,但是我得到了一个 Cannot-find-or-load-main-class 错误。我是白痴还是 Apache 库有点过时/不适合 Win 8/其他?

代码如下:

package NewProject;


import java.net.Socket;

import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.impl.DefaultBHttpClientConnection;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.message.BasicHttpRequest;
import org.apache.http.protocol.HttpCoreContext;
import org.apache.http.protocol.HttpProcessor;
import org.apache.http.protocol.HttpProcessorBuilder;
import org.apache.http.protocol.HttpRequestExecutor;
import org.apache.http.protocol.RequestConnControl;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
import org.apache.http.util.EntityUtils;

class NewProject
{
public static void main(String[] args) throws Exception
{
HttpProcessor httpproc = HttpProcessorBuilder.create()
.add(new RequestContent())
.add(new RequestTargetHost())
.add(new RequestConnControl())
.add(new RequestUserAgent("Test/1.1"))
.add(new RequestExpectContinue(true)).build();

HttpRequestExecutor httpexecutor = new HttpRequestExecutor();

HttpCoreContext coreContext = HttpCoreContext.create();
HttpHost host = new HttpHost("localhost", 8080);
coreContext.setTargetHost(host);

Out os = new Out("TestOut.txt");

DefaultBHttpClientConnection conn = new DefaultBHttpClientConnection(8 * 1024);
ConnectionReuseStrategy connStrategy = DefaultConnectionReuseStrategy.INSTANCE;

try
{

String[] targets =
{
"http://www.google.com/"
};

for (int i = 0; i < targets.length; i++)
{
if (!conn.isOpen())
{
Socket socket = new Socket(host.getHostName(), host.getPort());
conn.bind(socket);
}
BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]);
os.println(">> Request URI: " + request.getRequestLine().getUri());

httpexecutor.preProcess(request, httpproc, coreContext);
HttpResponse response = httpexecutor.execute(request, conn, coreContext);
httpexecutor.postProcess(response, httpproc, coreContext);

os.println("<< Response: " + response.getStatusLine());
os.println(EntityUtils.toString(response.getEntity()));
os.println("==============");

if (!connStrategy.keepAlive(response, coreContext))
{
conn.close();
}
else
{
os.println("Connection kept alive...");
}
}
}
catch (IndexOutOfBoundsException iob)
{
os.println("What happened here?");
}
finally
{
conn.close();
}

return;
}
}

最佳答案

... they didn't run properly, giving a "java.net.ConnectException"

这可能是由很多原因造成的。异常消息中有线索......您选择不与我们分享。

... "Cannot find or load Main-Class"

同样有多种可能的原因,异常消息中有线索......您选择不与我们分享。

但是您已经创建了一个 JAR 文件,加上您提供的错误消息片段中的“Main-Class”提示,这表明您在创建 JAR 文件时犯了一个错误;即您为“Main-Class”属性使用了错误的名称。

鉴于该源代码,“Main-Class”属性应为“NewProject.NewProject”。我怀疑你将它设置为其他东西。

第二种可能是您没有正确处理对 Apache 库的依赖。 Apache 类需要位于 JAR 文件指定的类路径中。 (当您使用 java -jar 启动时,您不能使用 -cp 参数或 $CLASSPATH。)


Am I an idiot or is the Apache library a little outdated/not fit for Win 8/something else?

Apache 库没有任何问题。

关于Java:ConnectException/无法找到或加载主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com