Can I Upload Jar File to Dropbox
Dropbox Core SDK for Java
A Java library to access Dropbox'due south HTTP-based Cadre API v2. This SDK also supports the older Cadre API v1, merely that support will be removed at some point.
License: MIT
Documentation: Javadocs
Setup
Coffee Version
The electric current release of Dropbox SDK Java supports Coffee 11+. If you are running Coffee 8 and desire to utilise the SDK, yous should user version iv.0.1.
Add together a dependency on the Dropbox Java SDK to your projection
If you're using Maven, then edit your project's "pom.xml" and add this to the <dependencies> section:
<dependency> <groupId>com.dropbox.cadre</groupId> <artifactId>dropbox-core-sdk</artifactId> <version>5.2.0</version> </dependency> If you are using Gradle, then edit your project's "build.gradle" and add together this to the dependencies department:
dependencies { // ... implementation 'com.dropbox.core:dropbox-cadre-sdk:5.ii.0' } You can also download the Coffee SDK JAR and and its required dependencies directly from the latest release page. Note that the distribution artifacts on the releases pages practise not contain optional dependencies.
Dropbox for Java tutorial
A good style to start using the Java SDK is to follow this quick tutorial. Just make sure you take the the Java SDK installed starting time!
Register a Dropbox API app
To use the Dropbox API, y'all'll need to register a new app in the App Panel. Select Dropbox API app and choose your app's permission. You'll need to utilise the app cardinal created with this app to access API v2.
Link an account
In order to make calls to the API, you'll need an case of the Dropbox object. To instantiate, laissez passer in the access token for the business relationship you lot want to link. (Tip: Y'all tin generate an access token for your own account through the App Panel).
import com.dropbox.cadre.DbxException; import com.dropbox.core.DbxRequestConfig; import com.dropbox.cadre.v2.DbxClientV2; public class Chief { individual static concluding String ACCESS_TOKEN = "<Admission TOKEN>"; public static void main(String args[]) throws DbxException { // Create Dropbox client DbxRequestConfig config = DbxRequestConfig.newBuilder("dropbox/coffee-tutorial").build(); DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN); } }
Test it out to make sure you've linked the right account:
// Get current account info FullAccount business relationship = client.users().getCurrentAccount(); System.out.println(account.getName().getDisplayName()); Try some API requests
Yous can apply the Dropbox object you instantiated above to make API calls. Attempt out a request to list the contents of a folder.
// Go files and folder metadata from Dropbox root directory ListFolderResult effect = customer.files().listFolder(""); while (true) { for (Metadata metadata : consequence.getEntries()) { Arrangement.out.println(metadata.getPathLower()); } if (!result.getHasMore()) { intermission; } result = customer.files().listFolderContinue(outcome.getCursor()); } Endeavour uploading a file to your Dropbox.
// Upload "exam.txt" to Dropbox try (InputStream in = new FileInputStream("examination.txt")) { FileMetadata metadata = client.files().uploadBuilder("/exam.txt") .uploadAndFinish(in); } Full Example Snippet
import com.dropbox.core.DbxException; import com.dropbox.core.DbxRequestConfig; import com.dropbox.core.v2.DbxClientV2; import com.dropbox.core.v2.files.FileMetadata; import com.dropbox.core.v2.files.ListFolderResult; import com.dropbox.core.v2.files.Metadata; import com.dropbox.cadre.v2.users.FullAccount; import coffee.io.FileInputStream; import coffee.io.InputStream; import java.io.IOException; public class Primary { private static final String ACCESS_TOKEN = "<ACCESS TOKEN>"; public static void main(String args[]) throws DbxException, IOException { // Create Dropbox client DbxRequestConfig config = new DbxRequestConfig("dropbox/java-tutorial", "en_US"); DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN); // Get electric current business relationship info FullAccount account = customer.users().getCurrentAccount(); System.out.println(business relationship.getName().getDisplayName()); // Become files and binder metadata from Dropbox root directory ListFolderResult result = client.files().listFolder(""); while (true) { for (Metadata metadata : issue.getEntries()) { Organization.out.println(metadata.getPathLower()); } if (!result.getHasMore()) { pause; } consequence = client.files().listFolderContinue(effect.getCursor()); } // Upload "exam.txt" to Dropbox try (InputStream in = new FileInputStream("test.txt")) { FileMetadata metadata = customer.files().uploadBuilder("/examination.txt") .uploadAndFinish(in); } } } Full examples
Some more complete examples can exist found here:
- Example for a simple spider web app: Web File Browser instance
- Instance for an Android app written in Kotlin: Android Kotlin Example
- Example for an Android app (deprecated): Android instance
- Example for a command-line tool: Command-Line Authorization instance
To try out running this examples, please follow the instructions beneath.
Relieve your Dropbox API key
Save your Dropbox API cardinal to a JSON file chosen, say, "test.app":
{ "central": "Your Dropbox API app key", "hole-and-corner": "Your Dropbox API app hugger-mugger" } App key and secret can be found in you lot app page in App Console.
Building from source
git clone https://github.com/dropbox/dropbox-sdk-java.git cd dropbox-sdk-java ./update-submodules # also do this later on every "git checkout" ./gradlew build # requires `python` command to use Python 3 The output will be in "build/".
Running the examples
- Follow the instructions in the "Build from source" department above.
- Relieve your Dropbox API key in a file chosen "examination.app". Run across: Salve your Dropbox API cardinal, above.
- Compile and install the SDK into your local maven repo:
./gradlew install - To compile all the examples:
(cd examples/ && ./gradlew classes - To compile merely one case:
(cd examples/ && ./gradlew :<example-name>:classes
authorize
This examples runs through the OAuth ii authorisation flow.
cd examples ./run authorize test.app test.auth This produces a file named "exam.auth" that has the admission token. This file tin can be passed in to the other examples.
account-info
A simple instance that fetches and displays information about the business relationship associated with the admission token.
cd examples ./run account-info test.auth (You must kickoff generate "test.auth" using the "authorize" example above.)
longpoll
An example of how to sentinel for changes in a Dropbox directory.
cd examples ./run longpoll test.auth "/path/to/watch" (You must first generate "test.auth" using the "authorize" instance higher up.)
upload-file
Uploads a file to Dropbox. The instance includes regular and chunked file uploads.
cd examples ./run upload-file exam.auth local-path/file.txt /dropbox-path/file.txt (Yous must get-go generate "test.auth" using the "authorize" example to a higher place.)
web-file-browser
A tiny web app that runs through the OAuth 2 authorization menstruation and and so uses Dropbox API calls to let the user browse their Dropbox files.
Prerequisite: In the Dropbox API app configuration panel, you lot demand to add "http://localhost:5000/dropbox-auth-finish" to the list of immune redirect URIs.
cd examples ./run web-file-browser 5000 test.app web-file-browser.db Running the integration tests
- Run through the
authorizeexample above to get a "test.auth" file. -
./gradlew -Pcom.dropbox.test.authInfoFile=<path-to-test.auth> integrationTest
To run individual tests, use the --tests gradle examination filter:
./gradlew -Pcom.dropbox.test.authInfoFile=<path-to-test.auth> integrationTest --tests '*.DbxClientV1IT.testAccountInfo' Android xi Updates
In the consequence you are using the Android-specific code in this library (i.e. the code in com.dropbox.core.android package), you volition demand to add some code to your AndroidManifest.xml when yous bump your target SDK version to 30. If your app does non use this code, you can ignore this section.
When targeting/running on Android xi (targetSdk 30 in your app'southward build.gradle), the Android Bone will restrict what installed apps your app can query for through the PackageManager. Since the android code in this library queries for the official Dropbox app, those restrictions will bear on your app when you target SDK 30. In particular, if you don't declare that your app queries for the official Dropbox app, and then you will run into crashes when you lot hitting the lawmaking that talks to the official Dropbox app.
To resolve the upshot, add the following to your AndroidManifest.xml
<queries> <bundle android:name="com.dropbox.android" /> </queries> We are working on pulling out this Android-specific code into its own android library with an AndroidManifest.xml that can be merged with your existing manifest, but in the concurrently, this will piece of work.
FAQ
When I use OkHttp3Requestor in DbxRequestConfig, I become errors like 'class file for okhttp3.OkHttpClient non found'.
The dependency of OKHttp/OKHttp3 is optional. You should add them, only if you lot explicitly want to use information technology as the http requestor.
Example in Gradle:
dependencies { // ... api 'com.squareup.okhttp3:okhttp:3.xi.0' } When I use the bundle JAR with some OSGi containers within an OSGi subsystem, I become a "Missing required adequacy" mistake.
The JAR'southward manifest has the following line:
Require-Capability: osgi.ee;filter="(&(osgi.ee=JavaSE)(version=1.vi))" OSGi containers running on Coffee ane.6 or above should provide this capability. Unfortunately, some OSGi containers don't do this correctly and will reject the package JAR in the OSGi subsystem context.
As a workaround, y'all can build your own version of the JAR that omits the "osgi.ee" capability past running:
./gradlew clean ./gradlew -Posgi.bnd.noee=true jar (This is equivalent to passing the "-noee" option to the OSGi "bnd" tool.)
Another workaround is to tell your OSGi container to provide that requirement: StackOverflow answer.
Does this SDK crave any special ProGuard rules for shrink optimizations?
Versions 2.0.0-2.0.iii of this SDK require SDK-specific ProGuard rules when shrinking is enabled. Nonetheless, since version 2.0.4, the only ProGuard rules necessary are for the SDK's required and optional dependencies. If you encounter ProGuard warnings, consider adding the following "-dontwarn" directives to your ProGuard configuration file:
-dontwarn okio.** -dontwarn okhttp3.** -dontwarn com.squareup.okhttp.** -dontwarn com.google.apphosting.** -dontwarn com.google.appengine.** -dontwarn com.google.protos.cloud.sql.** -dontwarn com.google.cloud.sql.** -dontwarn javax.activation.** -dontwarn javax.post.** -dontwarn javax.servlet.** -dontwarn org.apache.** IMPORTANT: If you are running version 2.0.x before 2.0.3, you should update to the latest Dropbox SDK version to avert a deserialization bug that tin cause Android apps that use ProGuard to crash.
Source: https://github.com/dropbox/dropbox-sdk-java/blob/master/ReadMe.md
0 Response to "Can I Upload Jar File to Dropbox"
Post a Comment