प्रश्न पर मॉड्यूल jdk.incubator.httpclient दिखाई बनाना
मैं कैसे मॉड्यूल jdk.incubator.httpclient
से कक्षाएं कार्यावधि में दृश्यमान बना सकते हैं?क्रम
क्या मैं
जावा 9 + Maven + HttpClient jdk.incubator.http.HttpClient
समस्याएं
=> Maven जब jdk.incubator.HttpClient
का उपयोग कर में नाकाम रहने के निर्माण का उपयोग कर रहा हूँ। फिक्स्डthis question साथ धन्यवाद
=> रनटाइम स्टैकट्रेस @nullpointer रहे हैं:
java.lang.NoClassDefFoundError: jdk/incubator/http/HttpClient
at com.foo.Bar.Bar.<clinit>(Bar.java:56) ~[?:?]
at java.lang.Class.forName0([email protected]/Native Method) ~[?:?]
at java.lang.Class.forName([email protected]/Class.java:374) ~[?:?]
Caused by: java.lang.ClassNotFoundException: jdk.incubator.http.HttpClient
at java.net.URLClassLoader.findClass([email protected]/URLClassLoader.java:388) ~[?:?]
at java.lang.ClassLoader.loadClass([email protected]/ClassLoader.java:486) ~[?:?]
at java.lang.ClassLoader.loadClass([email protected]/ClassLoader.java:419) ~[?:?]
at com.foo.Bar.Bar.<clinit>(Bar.java:56) ~[?:?]
at java.lang.Class.forName0([email protected]/Native Method) ~[?:?]
at java.lang.Class.forName([email protected]/Class.java:374) ~[?:?]
पोम
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>${project.basedir}/src</sourceDirectory>
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>true</filtering>
<directory>${project.basedir}/resources</directory>
<includes>
<include>plugin.yml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
आप देख सकते हैं की धारा बिल्ड, मैं अपने निर्भरता के लिए maven-shade-plugin
उपयोग कर रहा हूँ, लेकिन चूंकि jdk.incubator.http.HttpClient
जेडीके का हिस्सा है, यह मेरे जार में शामिल नहीं है।
निष्पादित करने के लिए कोशिश कर रहा है के रूप में: निम्न अपवाद में
java -jar --add-modules jdk.incubator.httpclient uhc-staging.jar
परिणाम:
Error occurred during initialization of VM java.lang.module.ResolutionException: Module jdk.incubator.httpclient not found at java.lang.module.Resolver.fail([email protected]/Resolver.java:790) at java.lang.module.Resolver.resolveRequires([email protected]/Resolver.java:94) at java.lang.module.Configuration.resolveRequiresAndUses([email protected]/Configuration.java:370) at java.lang.module.ModuleDescriptor$1.resolveRequiresAndUses([email protected]/ModuleDescriptor.java:1986) at jdk.internal.module.ModuleBootstrap.boot([email protected]/ModuleBootstrap.java:263) at java.lang.System.initPhase2([email protected]/System.java:1927)
-: इसलिए, इस का हल JDK संस्करण नवीनतम रिलीज (जो इनक्यूबेटर मॉड्यूल शामिल होना चाहिए) करने के लिए स्थापित उन्नयन किया जाएगा और उसके बाद ही आदेश का उपयोग एप्लिकेशन चलाने का प्रयास के रूप में सुझाव एक एडन के रूप में प्रयोग किया जाता है। एक विधि 'सक्षम() 'है जिसे मुख्य प्रक्रिया सक्षम करने पर सक्षम कहा जाता है। मुख्य प्रक्रिया के लिए 'java -jar server.jar' –
@nullpointer के साथ शुरू की गई एक और जार फ़ाइल बहुत संक्षिप्त होने के लिए खेद है। मेरा जार एपी बुक्किट के लिए एक प्लगइन के रूप में प्रयोग किया जाता है। जब बुक्किट सर्वर शुरू होता है, तो यह मेरे सहित सभी प्लगइन लोड करता है, और 'सक्षम()' विधि को कॉल करता है। मेरी सक्षम विधि में मैं उपयोगकर्ता एपीआई पर कुछ जानकारी लोड करने के लिए एचटीपी क्लाइंट के साथ अपने एपीआई को कॉल करके शुरू करता हूं। –
आदर्श रूप से आपको वर्तमान जार के एकीकरण भाग के साथ बुक्किट और वहां इस्तेमाल किए गए कोड के साथ प्रश्न को अद्यतन करना चाहिए। [हालांकि, ईमानदारी से मुझे यह पता नहीं है कि बुक्किट कैसे काम करता है।] – nullpointer