Score:0

วิธีเรียกใช้ .war ด้วย java เพื่อดำเนินการภายใน dir จากทางลัดบนเดสก์ท็อป

ธง ng

นี่คือกรณีของฉัน ฉันมี .war ที่ฉันรันด้วยจาวาและใช้งานได้เฉพาะในโฟลเดอร์เท่านั้น:

ซีดี /opt/myappdir/
java -jar myapp.war

หมายเหตุ: มันไม่ทำงานเช่นนั้น:

java -jar /opt/myappdir/myapp.war

ฉันได้สร้างสคริปต์ทุบตี (sudo /opt/myappdir/run.sh) เพื่อเปิดใช้คำสั่งนี้

#!/usr/bin/env ทุบตี
ซีดี /opt/myappdir/
java -jar myapp.war

จนถึงตอนนี้ทุกอย่างทำงานได้ ตอนนี้ปัญหา:

ฉันต้องการเปิดใช้งานจากทางลัดบนเดสก์ท็อป นี่คือทางลัดบนเดสก์ท็อปของฉันเพื่อเริ่มสงครามแอปของฉัน

[รายการเดสก์ท็อป]
การเข้ารหัส=UTF-8
เวอร์ชัน=1.0
ชื่อ = MyApp
ความคิดเห็น = เรียกใช้ MyApp
Type=ใบสมัคร
Exec=/opt/myappdir/run.sh
ไอคอน=/opt/myappdir/myapp.ico
เส้นทาง=/opt/myappdir/
เทอร์มินัล = เท็จ

แต่ตั้งแต่ myapp.war ต้องรันด้วย sudo และใน มายแอปดีร์ ฉันแก้ไขของฉัน run.sh สคริปต์ดังต่อไปนี้

#!/usr/bin/env ทุบตี
ซีดี /opt/myappdir/
dir=$(dirname $(readlink -m $BASH_SOURCE))
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY QT_X11_NO_MITSHM=1 java -jar myapp.war

ทำไมต้องไลน์ด้วย dir=$(dirname $(readlink -m $BASH_SOURCE))?

เพราะฉันต้องแน่ใจว่า myapp.war กำลังวิ่งเข้าไปข้างใน มายแอปดีร์

ทำไมต้องไลน์ด้วย pkexec?

เพราะเมื่อดับเบิลคลิกที่ทางลัดบนเดสก์ท็อป ชวา จำเป็นต้องดำเนินการด้วย ซูโด

ออก:

ข้อผิดพลาด: ไม่สามารถเข้าถึง jarfile myapp.war

บางคน ที่นี่ เสนอวิธีแก้ปัญหาสำหรับคำถามที่คล้ายกัน แต่ไม่ได้ผลสำหรับฉัน (แก้ไขข้อเสนอ :)

#!/usr/bin/env xdg-เปิด
[รายการเดสก์ท็อป]
เวอร์ชัน=1.0
Type=ใบสมัคร
เทอร์มินัล = เท็จ
Exec=java -jar 'myapp.war'
เส้นทาง=/opt/myappdir/
ชื่อ=myapp
ความคิดเห็น = myapp
ไอคอน=/opt/myappdir/myapp.ico

ฉันจะแก้ไขของฉันได้อย่างไร run.sh สคริปต์ที่จะเรียกใช้ myapp.war กับ ซูโด ข้างใน มายแอปดีร์และเรียกจากทางลัดบนเดสก์ท็อป? ขอบคุณ

อัปเดต

ตามที่มีคนอธิบาย ที่นี่, pkexec ไม่ทำงานในไดเร็กทอรีเดียวกัน (ฉันเดาว่าเป็นสาเหตุที่ทำให้หาไม่พบ myapp.war ไฟล์). ดังนั้นวิธีแก้ไขคือเรียกใช้คำสั่งที่จะบังคับให้เรียกใช้จาวาในไดเร็กทอรี แต่ฉันลองแล้วและล้มเหลว

Krackout avatar
it flag
แล้วการเพิ่มคีย์ `Path=/opt/myappdir` ในไฟล์ .desktop ล่ะ? จากข้อกำหนดไฟล์บนเดสก์ท็อป เกี่ยวกับพาธคีย์: «หากรายการเป็นประเภท Application ไดเร็กทอรีการทำงานเพื่อรันโปรแกรมใน»
acgbox avatar
ng flag
@Krackout ฉันได้ทดสอบและไม่มีอะไรเกิดขึ้น เหมือนกันหมด ปัญหายังคงเป็น `run.sh`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา